Join oder nicht Join - das ist hier die Frage
Frank
- datenbank
Hi allerseits,
also, ich hab das leider nicht studiert,
deshalb komme ich hier echt an meine Grenzen :o(
$details = db_query("select * from $db LEFT Join preise Using (ID) WHERE $db.ID = '$ID'") or db_die();
$details = mysql_fetch_assoc($details);
Den hab ich ja noch zusammengekriegt,
und da ist mir auch verständlich, dass hier aus 2 Tabellen alle Felder geholt werden,
sofern das Feld ID eben mit der Variable $db.ID übereinstimmt.
_______________
Jetzt habe ich aber noch eine Übersichtsseite
in der alle Artikel einer Kategorie per while untereinandergestellt werden.
Ich möchte auch hier die Abfragen zusammenfassen.
Aber wie ?
Ich kann ja erstmal nur:
select * from $db WHERE Kategorie
= '$ID' abfragen. // wobei $ID hier NICHT die Artikelnummer ist, sondern die Kategoriennummer
Krieg ich da noch die Preisabfrage mit rein, bevor die while-Schleife startet?
Die Preise sind ja in Tabelle preise.
Und dort in dem Datensatz, wo die ID mit $db.ID übereinstimmt.
Geht das oder brauch ich 'ne 2. Abfrage innerhalb der While-Schleife ?
Kann mir da jemand helfen ?
Bitte in "Datenbank-für-Dummies-Deutsch" !
Danke schonmal, Frank
Hallo
Kann mir da jemand helfen ?
Nein. Nicht mit diesen Angaben, die hinten und vorne nicht ausreichen.
Bei SQL-Problemen läßt man zuallererst alles PHP weg. Naja, für eines waren Deine PHP-Statements nützlich, immerhin weiß ich dadurch, dass Du MySQL verwendest. Bitte gib auch noch die Version an, denn die Leistungsfähigkeit von MySQL unterscheidet sich enorm.
Bitte gib im nächsten Schritt an, wie Deine Tabellen aussehen (Ich weiß bis jetzt nur, dass es eine Tabelle preise gibt, die eine Spalte ID hat. In irgendeiner Deiner Tabellen gibt es noch eine Spalte Kategorie.). Das ist zuwenig. Dazu ein paar Beispieldatensätze jeder Tabelle und wie Dein Ergebnis aussehen sollte - und warum. Dann, ja dann kann man Dir wahrscheinlich helfen.
Bis dahin könntest Du Dich mit den JOIN-Artikeln vergnügen:
Einführung Joins
Fortgeschrittene Jointechniken
Freundliche Grüße
Vinzenz
Hi Vinzenz,
Danke, ich bin schon ne Menge weiter ...
Die Abfrage hab ich
... from (Z as A LEFT join preise as B on A.ID=B.ID) where A.cat = '$ID' ...
Was ich nicht verstehe:
while ($daten = mysql_fetch_array($details)) {
$A1 = $daten['A.ID']; // ... bringt mir keinen Wert
sondern nur
$A1 = $daten['ID']; // ... bringt mir einen Wert
Wieso ist das so obwohl ich mit alias A und B arbeite ?
Kann ich das ändern ?
Danke, Frank
Du machst den Alias ja nur auf die Tabellen als solche und nicht auf die Spalten. Versuch mal was wie "SELECT tabelle.spalte AS Alias...".
Hi Vinzenz,
Danke, ich bin schon ne Menge weiter ...Die Abfrage hab ich
... from (Z as A LEFT join preise as B on A.ID=B.ID) where A.cat = '$ID' ...Was ich nicht verstehe:
while ($daten = mysql_fetch_array($details)) {
$A1 = $daten['A.ID']; // ... bringt mir keinen Wertsondern nur
$A1 = $daten['ID']; // ... bringt mir einen WertWieso ist das so obwohl ich mit alias A und B arbeite ?
Kann ich das ändern ?Danke, Frank
Du machst den Alias ja nur auf die Tabellen als solche und nicht auf die Spalten. Versuch mal was wie "SELECT tabelle.spalte AS Alias...".
Aaah, ich glaube ich verstehe ein wenig ...
Das hiesse aber, dass ich nicht mehr "select * from" abfragen kann, oder ?
Dann reicht mir das soweit ...
Auf jeden Fall EIN DICKES DANKE an Euch Beide!
Grüsse, Frank