select .... order by ... mit Kriterium aus anderer Tabelle?

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • select .... order by ... mit Kriterium aus anderer Tabelle?

    Hallo,

    ich lese mit nachfolgender select-Anweisung ganz normal KdNr und Nachname1 aus und gebe die gefundenen Datensätze mit einer while-Schleife aus. Jetzt mache ich eine 2-te Abfrage innerhalb der Schleife mit einer anderen Tabelle, wobei hier in der Where-Clause die KdNr der ersten Abfrage steht. $Num2 ist die Anzahl der gefundenen Datensätze aus der zweiten Abfrage.
    Meine Frage: Wie kann ich die Tabelle –bestehend aus den Feldern KdNr, Nachname1 und Num2 - nach $Num2 sortieren lassen?

    Gruß Ralf

    $result=mysql_query("select * from $tabelle1 where $tabelle1.Nachname1 like '%$Nachname%' order by '$Feldname' $Reihenfolge");

    <? $i=0; while ($i<$num):
    echo "<tr><TD align=left>" . mysql_result($result,$i,"$tabelle1.KdNr") . "</TD>";
    echo "<TD align=left>" . mysql_result($result,$i,"$tabelle1.Nachname1") . "</TD>";
    $result2=MYSQL_QUERY( "SELECT * FROM $tabelle2 where $tabelle2.KdNr =" . mysql_result($result,$i,"$tabelle1.KdNr") . "");
    $num2=mysql_NumRows ($result2);
    echo "<TD align=left>" . $Num2 . "</TD></tr>";
    $i++; endwhile;
    ?>

  • #2
    Hallo,

    so mal aus der Hüfte geschossen und nicht getestet:

    PHP-Code:
    <?php 
    $result 
    mysql_query("SELECT t1.KdNr, t1.Nachname1, COUNT(t2.KdNr) as num2 
                           FROM 
    $tabelle1 as t1 
                           LEFT JOIN 
    $tabelle2 AS t2 ON (t1.KdNr = t2.KdNr)
                           WHERE t1.Nachname1 like '%
    $Nachname%' 
                           GROUP BY t2.KdNr
                           ORDER BY t2.KdNr 
    $Reihenfolge");

    while (
    $row mysql_fetch_array($result)) {
      echo 
    "<tr><TD align=left>" $row['KdNr'] . "</TD>"
      echo 
    "<TD align=left>" $row['Nachname1'] . "</TD>"
      echo 
    "<TD align=left>" $row['num2'] . "</TD></tr>"
    }
    ?>
    Gruß Jan
    Zuletzt geändert von JanS; 14.05.2002, 13:04.

    Kommentar


    • #3
      Hallo JanS,

      danke für deinen Tip, mit nachfolgendem Select funktionierts nun.

      $result=mysql_query("select $tabelle1.*, COUNT($tabelle2.KdNr) as Num2 from $tabelle1 left join $tabelle2 on ($tabelle1.KdNr = $tabelle2.KdNr) where $tabelle1.Nachname1 like '%$Nachname%' group by $tabelle1.KdNr order by '$Feldname' $Reihenfolge");


      Was ich nicht so ganz verstehe ist das mit dem left join. Was ist denn der Unterschied zu where $tabelle1.KdNr = $tabelle2.KdNr? aus dem Manual werde ich nicht so ganz schlau.

      Ich vermute, dass das left join eine weichere Bedingung ist, da nämlich in $tabelle2 nicht alle KdNr von Tabelle1 zu finden sind, d.h. es gibt in Tabelle1 KdNr die nicht in Tabelle2 sind, und dies war dann auch mein Problem, was nun gelöst ist

      Gruß Ralf

      Kommentar


      • #4
        mit Join bekommst du auch Datensätze aus Tabelle 1, wenn in Tabelle 2 kein passender existiert.
        mein Sport: mein Frühstück: meine Arbeit:

        Sämtliche Code-Schnipsel sind im Allgemeinen nicht getestet und werden ohne Gewähr auf Fehlerfreiheit und Korrektheit gepostet.

        Kommentar

        Lädt...
        X