SELFPHP: Version 5.8.2 Befehlsreferenz - Tutorial – Kochbuch – Forum für PHP Einsteiger und professionelle Entwickler

SELFPHP


Professional CronJob-Service

Suche



CronJob-Service    
bei SELFPHP mit ...



 + minütlichen Aufrufen
 + eigenem Crontab Eintrag
 + unbegrenzten CronJobs
 + Statistiken
 + Beispielaufrufen
 + Control-Bereich

Führen Sie mit den CronJobs von SELFPHP zeitgesteuert Programme auf Ihrem Server aus. Weitere Infos



:: Buchempfehlung ::

Der CSS-Problemlöser

Der CSS-Problemlöser zur Buchempfehlung
 

:: Anbieterverzeichnis ::

Globale Branchen

Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP  

 

:: Newsletter ::

Abonnieren Sie hier den kostenlosen SELFPHP Newsletter!

Vorname: 
Name:
E-Mail:
 
 

Zurück   PHP Forum > SELFPHP > MySQLi/PDO/(MySQL)
Hilfe Community Kalender Heutige Beiträge Suchen

MySQLi/PDO/(MySQL) Anfänger, Fortgeschrittene oder Experten können hier Fragen und Probleme rund um MySQLi/PDO/(MySQL) diskutieren

Antwort
 
Themen-Optionen Ansicht
  #1  
Alt 03.04.2008, 09:59:44
Benutzerbild von helado
helado helado ist offline
Anfänger
 
Registriert seit: Apr 2008
Alter: 42
Beiträge: 15
mysql subselect

(Apache Server 5.0.41)
hallo zusammen,
habe ein problem, ist leider schwer zu erklären. ich versuchs mal:

habe folgende tabellen:
Tab1
Feld1, Feld2, Feld3

Tab2
Feld1, Feld2, Feld3

abfrage wie folgt:

SELECT Tab1.Feld1, Tab2.Feld2 FROM Tab1 LEFT JOIN Tab2 ON (Tab1.Feld1 = Tab2.Feld1) AND (Tab1.Feld2 = Tab2.Feld2) WHERE (Tab1.Feld1 = '12345') AND Tab2.Feld3 = '000009999');

das klappt auch, nur brauch ich eine vorabauswahl von Tab2, wo lediglich die datensätze einbezogen werden, wo Tab2.Feld3 = '000009999' und diese dann per LEFT JOIN in die abfrage integriert werden sollen.

heißt, wenn in Tab 2 nichts da ist, dann soll er trotzdem die werte aus Tab 1 bringen und die fehlenden DS aus Tab2 als null werte!

im access würde ich erst eine abfrage machen, wo ich die vorauswahl treffe, und diese dann die abfrage in diese abfrage einbringen würde.

hatte die abfrage wie folgt umgestellt, leider habe ich nach 10 min minen rechner neu gestartet, weil der nur noch am rechnen war...

SELECT Tab1.Feld1, Tab2.Feld2 FROM Tab1 LEFT JOIN Tab2 ON (Tab1.Feld1 = Tab2.Feld1) AND (Tab1.Feld2 = Tab2.Feld2) WHERE (Tab1.Feld1 = '12345') AND Tab2.Feld3 in (SELECT Tab2.Feld3 FROM Tab2 WHERE Tab2.Feld3= '000009999');

was mach ich falsch?

danke

thomas
Mit Zitat antworten
  #2  
Alt 03.04.2008, 19:19:15
Franzx Franzx ist offline
Junior Member
 
Registriert seit: Nov 2005
Ort: Bremen
Beiträge: 437
AW: mysql subselect

Zitat:
Zitat von helado Beitrag anzeigen
(Apache Server 5.0.41)
hallo zusammen,
habe ein problem, ist leider schwer zu erklären. ich versuchs mal:

habe folgende tabellen:
Tab1
Feld1, Feld2, Feld3

Tab2
Feld1, Feld2, Feld3

abfrage wie folgt:

SELECT Tab1.Feld1, Tab2.Feld2 FROM Tab1 LEFT JOIN Tab2 ON (Tab1.Feld1 = Tab2.Feld1) AND (Tab1.Feld2 = Tab2.Feld2) WHERE (Tab1.Feld1 = '12345') AND Tab2.Feld3 = '000009999');

thomas

Hallo Thomas und herzlich Willkommen im Forum!

Ich denke anstelle des LEFT JOIN sollte ein LEFT OUTER JOIN helfen.

Hier ein grafischer Überblick der Joins. http://www.codinghorror.com/blog/archives/000976.html


Grüße, Franzx
__________________
Für die richtige Frage gibt's die richtige Antwort!
Mit Zitat antworten
  #3  
Alt 04.04.2008, 10:36:29
Benutzerbild von helado
helado helado ist offline
Anfänger
 
Registriert seit: Apr 2008
Alter: 42
Beiträge: 15
AW: mysql subselect

hallo,

freut mich auch hier zu sein. :-)

Danke für deine antwort.

habe auch das mit dem "left OUTER join" getestet, leider ging es nicht... ergebnis: kein Datensatz.

das problem liegt eindeutig in der problematik, das ich bei der where klausel für beide tabellen ein kriterium angeben muß!

also wähle aus Tab1 5 datensätzze aus, und verknüpfe diese mit 5 werten aus tab2 (wenn vorhanden)

es ist halt etwas problematisch...

im access würde ich eine abfrage machen für tab2, die ich dann in diesen sql string einbringen würde. nur das ist nicht access, und will ja auch was lernen :-)

könntest mich auf den richtigen pfad weisen? Danke

thomas
Mit Zitat antworten
  #4  
Alt 04.04.2008, 10:50:15
Franzx Franzx ist offline
Junior Member
 
Registriert seit: Nov 2005
Ort: Bremen
Beiträge: 437
AW: mysql subselect

Zitat:
Zitat von helado Beitrag anzeigen

es ist halt etwas problematisch...

im access würde ich eine abfrage machen für tab2, die ich dann in diesen sql string einbringen würde. nur das ist nicht access, und will ja auch was lernen :-)

könntest mich auf den richtigen pfad weisen? Danke

thomas
Mach doch Abfragen in Access und diese sind im Prinzip 1:1 zu übernehmen.

Habe die letzten Jahre mehrere Acces-DB in eine Webausgabe gewandelt, in PHP, XHTML-Templates und MySql-DB.
Die SQL-Statments können doch über die Access-Eigenschaften des betreffenden Feldes ausgelesen werden!
Anfänglich habe ich somit viele Anforderungen gelöst, schon alleine weil da eben per grafischen Elementen die Tabellen, im Prinzip per Mausklick, verknüpft werden können.
Dies grafische Zusammenhänge werden durch Access in ein sql-Statement gebracht und schon ergibt sich ein "lerning per doing".

Nur so ein Vorschlag!

Grüße, Franzx
__________________
Für die richtige Frage gibt's die richtige Antwort!
Mit Zitat antworten
  #5  
Alt 04.04.2008, 13:21:11
Benutzerbild von helado
helado helado ist offline
Anfänger
 
Registriert seit: Apr 2008
Alter: 42
Beiträge: 15
AW: mysql subselect

so hab ich auch angefangen, und bei schwierigen abfragen, mach ich das nach wie vor so!

leider gibt es kein abschreiben, wenn man in die Abfrage unterabfragen einbaut... das sprengt die logik, zumindest meine... :-(
Mit Zitat antworten
  #6  
Alt 04.04.2008, 13:29:56
Franzx Franzx ist offline
Junior Member
 
Registriert seit: Nov 2005
Ort: Bremen
Beiträge: 437
AW: mysql subselect

Zitat:
Zitat von helado Beitrag anzeigen
so hab ich auch angefangen, und bei schwierigen abfragen, mach ich das nach wie vor so!

leider gibt es kein abschreiben, wenn man in die Abfrage unterabfragen einbaut... das sprengt die logik, zumindest meine... :-(
Ok, wie sieht es aus, kannst Du ein PAP oder Schaubild zeigen?
Wie hängen die Tabellen zusammen, an welchen Stellen und welche Informationen sollen aus welchen Tabellen genommen werden.

Mit einer Beschreibung, die auch noch ineinander verschachtelt ist, kann ich nichts anfangen.
Ein PAP ist übersichtlicher und zeigt die Zusammenhänge.

Grüße, Franzx
__________________
Für die richtige Frage gibt's die richtige Antwort!
Mit Zitat antworten
  #7  
Alt 04.04.2008, 14:37:29
Benutzerbild von helado
helado helado ist offline
Anfänger
 
Registriert seit: Apr 2008
Alter: 42
Beiträge: 15
AW: mysql subselect

bild kann ich leider nicht, aber ich mach es verständlich:

in Tab1 sind folgende felder enthalten (auf das wichtigste reduziert):
Tab1->Bestelldaten:
Datum, KdNr, EAN5, WZ(Warenzustand 1A, 1B), Menge, BestellNr, PosNr

Tab2->Stammdaten:
PricatNr, Ean5,WZ, EK,VK

in Tab1 suche ich alles Datensätze zu Bestellnummer 12345
das wäre ja "SELECT .... FROM Tab1 WHERE BestellNr = 12345;"

in Tab2 suche ich die Stammdatensätze (Einkaufspreis, Verkaufspreis) zu dem Kunden, anhand der Pricatnummer die der kundenummer zugeordnet ist, in dem Fall "00000099999"
das wäre ja "SELECT .... FROM Tab2 WHERE Pricat = '0000099999';"

diese beiden tabelle sind mit den felder EAN5 und WZ verknüpft:
"... FROM Tab1 LEFT JOIN Tab2 ON (Tab1.Ean5 = Tab2.Ean5) AND (Tab1.WZ = Tab2.WZ)...
wenn also preise für den artikel (EAN5, wZ, zum Kunden XYZ) fehlen, dann sollen dort leere felder kommen, damit ersichtlich ist, das man handlungsbedarf hat, sprich: preise anlegen.

deshalb kam ich als aller erstes im wie eröffnungthread geschrieben auf folgende idee:

SELECT Tab1.EAN5, Tab2.VK FROM Tab1 LEFT JOIN Tab2 ON (Tab1.EAN5 = Tab2.EAN5) AND (Tab1.WZ = Tab2.WZ) WHERE (Tab1.BestellNr = '12345') AND Tab2.Pricat = '000009999');

ich habe dazu meine 2 abfragen nochmal als jpg hochgeladen!

danke

thomas
Miniaturansicht angehängter Grafiken
forum_pic1.JPG  
Mit Zitat antworten
  #8  
Alt 04.04.2008, 17:07:25
Franzx Franzx ist offline
Junior Member
 
Registriert seit: Nov 2005
Ort: Bremen
Beiträge: 437
AW: mysql subselect

Hmmm,
Tab1->Bestelldaten:
Datum, KdNr, EAN5, WZ(Warenzustand 1A, 1B), Menge, BestellNr, PosNr
Tab2->Stammdaten:
PricatNr, Ean5,WZ, EK,VK
Will nur mal festhalten:
Also, der Beschreibung nach gibt es 2Tabellen, siehe entsprechende Felder. Die PricatNr = KdNr, oder wie soll sonst zugeordnet sein?

PHP-Code:
SELECT FROM TAB2 INNER JOIN TAB1 ON TAB2.PricatNr TAB1.KdNr WHERE BestellNr 12345 
In diesem FALL würden alle Datensätze ausgegeben werden, die mit diesem Kunden zusammen hängen, ob mit leeren Feldern oder nicht, sofern vorher selectiert.

Sollen nur Datensätze ausgegeben werden, mit diesen leeren Feldern, so würde in der WHERE-Bedingung eben noch folgen

PHP-Code:
... WHERE BestellNr 12345 AND EK is null or VK is null .. 
Zur Verknüpfung von 2 Tabellen, und laut Beschreibung sind es nur 2 Tabellen, reicht jeweils ein eindeutiges Feld. Das eindeutige Feld ist jeweils offenbar die KdNr und PricatNr.

Grüße, Franzx
__________________
Für die richtige Frage gibt's die richtige Antwort!
Mit Zitat antworten
  #9  
Alt 07.04.2008, 13:15:12
Benutzerbild von helado
helado helado ist offline
Anfänger
 
Registriert seit: Apr 2008
Alter: 42
Beiträge: 15
AW: mysql subselect

es ist geschafft,

und der fehler ist so banal... :-)

die zu verknüpfenden felder waren unterschiedlich, sprich... in Tab 1 stand der Wert "1A", der in Tab 2 auch stand, allerdings hab ich mir mit Length(fl) mal die längen der beiden felder anzeigen lassen, und sieeh da, der eine hatte länge 2 (is ja auch normal) und der andere 3... sprich da war irgendwo ein sonderzeichen versteckt, dr anscheinnd durch den import von access mitgekommen ist.

Danke franz für deine Geduld...

Schöne Grüße aus der Oberlausitz.

Thomas
Mit Zitat antworten
  #10  
Alt 07.04.2008, 14:04:47
Franzx Franzx ist offline
Junior Member
 
Registriert seit: Nov 2005
Ort: Bremen
Beiträge: 437
AW: mysql subselect

Zitat:
Zitat von helado Beitrag anzeigen
es ist geschafft,

Danke franz für deine Geduld...

Schöne Grüße aus der Oberlausitz.

Thomas
Gratulation zum Erfolg, und gerne, wenn ich helfen kann!

Grüße aus Bremen,
Franz
__________________
Für die richtige Frage gibt's die richtige Antwort!

Geändert von Franzx (07.04.2008 um 14:06:16 Uhr)
Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind aus.
[IMG] Code ist aus.
HTML-Code ist aus.

Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Mysql startet nicht oberonal MySQLi/PDO/(MySQL) 3 24.11.2006 09:41:31
MySQL Page Script. Problem. dtone MySQLi/PDO/(MySQL) 8 15.10.2006 14:58:06
MySQL Connect Problem DanielEXQ2 PHP Grundlagen 8 14.05.2005 02:07:55
mySQL DB erstellen und unter PHP nutzen norial MySQLi/PDO/(MySQL) 1 25.10.2004 11:01:29
MySQL - ORDER BY RAND() und PHP MacMarc PHP Grundlagen 15 05.12.2002 22:23:39


Alle Zeitangaben in WEZ +2. Es ist jetzt 11:56:27 Uhr.


Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.


© 2001-2024 E-Mail SELFPHP OHG, info@selfphp.deImpressumKontakt