Frank: Join oder nicht Join - das ist hier die Frage

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

  1. 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

    1. 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

      1. 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 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

        1. 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