Mehrere MySQL Abfragen in einer While schleife

  • Guten Tag,


    meine PHP-Kentnisse stoßen an ihre grenzen


    Ich habe Hier 3 DBAbfragen aus 3 versch. Tabellen die zusammenhängen:



    in der tabelle bestellungen sind viele einträge mit der selben orderid .


    Ich möchte nun diese Einträge + city+plz (dafür mehrere Abfragen) in einer Tabelle anzeigen lassen, durch eine while Schleife.
    Da fängt mein Problem an. Es will irgendwie nicht funktionieren, die orderids werden angezeigt durch(mysql_fetch_array($rs_SelQty2)) in der While Schleife. Dennoch werden die dazugehörigen PLZ und City aus den anderen Tabellen nicht angezeigt. Außerdem weiß ich nicht wie ich dafür sorgen kann das er nicht die doppelten einträge von der OrderID anzeigt.


    hier ist der rest:


  • Und warum machst du das nicht mit SQL JOINs? So ist es nicht nur inperformant, sondern auch umständlich.


    Ich kenne dein Datenbankdesign nicht, aber wenn ich deine Queries mal überfliege:



    SQL
    SELECT b.UserID, b.orderid, b.closed, c.postalCode, c.city FROM bestellung b LEFT JOIN UserLogin l ON b.UserID = l.userid LEFT JOIN Customer c ON c.customerID = l.userid WHERE b.closed = 0


    Ach ja, bevor ich es vergesse, solltest du natürlich nicht die alte MySQL-API verwenden.

    Einmal editiert, zuletzt von bauerj ()

  • Vielen lieben dank hab in der zwischenzeit auch diesen Weg gefunden, was genau deinem entspricht[PHP] $qry_SelQty2="SELECT b.UserID, b.orderid, b.closed, u.customerID, c.postalCode, c.city FROM bestellung b LEFT JOIN UserLogin u ON u.userid=b.UserID LEFT JOIN Customer c ON c.customerID=u.customerID ORDER BY b.ID DESC
    ";[/PHP]


    Wie kann ich nun dafür sorgen das von b nur einmal ein eintrag mit der selben orderid angezeigt wird?[/code]


    Immoment sieht das wie im Anhang aus, es soll nur einmal die Bestellnummer 175 aus der tabelle Bestellung auftauchen.

  • Hey danke funktioniert, aber da gibt es ein Problem
    Die höchste Orderid wird nicht angezeigt (175). Es wird nur 174 angezeigt und dann gehts runter mit 173,172


    mit dieser Abfrage:


    SQL
    $qry_SelQty2="SELECT b.UserID, b.orderid, b.closed, u.customerID, c.postalCode, c.city FROM bestellung b LEFT JOIN UserLogin u ON u.userid=b.UserID LEFT JOIN Customer c ON c.customerID=u.customerID WHERE b.closed = 0  GROUP BY b.orderid DESC
    	";



    Edit: das Problem liegt an dem DESC, wenn ich die abfrage ohne Desc mache wird die höchste orderid angezeigt. Woran kann das liegen?

  • Anhang 1 mit dieser Abfrage:

    SQL
    SELECT b.UserID, b.orderid, b.closed, u.customerID, c.postalCode, c.city FROM bestellung b LEFT JOIN UserLogin u ON u.userid=b.UserID LEFT JOIN Customer c ON c.customerID=u.customerID WHERE b.closed = 0 GROUP BY b.orderid ORDER BY b.orderid DESC


    Anhang 2 mit dieser Abfrage



    SQL
    SELECT b.UserID, b.orderid, b.closed, u.customerID, c.postalCode, c.city FROM bestellung b LEFT JOIN UserLogin u ON u.userid=b.UserID LEFT JOIN Customer c ON c.customerID=u.customerID WHERE b.closed = 0 GROUP BY b.orderid ORDER BY b.orderid


    die 176 fehlt bei der 1 Abfrage .

  • Nein es liegt nicht an dem php geschnipsel auch wenn ich nur folgendes hab:



    wird die höchste zahl nicht angezeigt. Das problem liegt an der abfrage.

    2 Mal editiert, zuletzt von SEZU ()

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen