tutorials.de Buch-Aktion 05/2012
ERLEDIGT
JA
ANTWORTEN
2
ZUGRIFFE
603
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Avatar von atlantyz
    atlantyz atlantyz ist offline Mitglied Gold
    Registriert seit
    Apr 2007
    Ort
    Wetzlar (Hessen)
    Beiträge
    147
    Hallo Leute,

    ich steh grad ziemlich aufm Schlauch und bekomm eine Abfrage einfach nicht hin.

    Ich habe zwei Tabellen: die eine heißt Bestellungen, die zweite Artikel.

    In Bestellungen gibt es folgende Werte:

    bestell_id, datum, bestelldatum, bestellsumme

    In Artikel gibt es folgende Werte:

    artikel_id, bestell_id, anzahl, bezeichnung, lieferdatum

    So, nun habe ich folgendes vor: ich möchte mir alle Bestellungen anzeigen lassen, in denen Artikel nur teilweise geliefert wurden.

    Und jetzt kommt mir einfach nicht der Geistesblitz... also in der Theorie müsste es so gehen: ich gehe die Tabelle Artikel durch und wähle alle Artikel aus, in denen das lieferdatum gefüllt ist (wenn nicht geliefert wurde, ist der Wert 0). Im nächsten Schritt suche ich die Artikel raus, die die gleiche bestell_id wie die eben gefundenen Artikel haben, aber deren lieferdatum 0 ist.

    Ich steh grad echt aufm Schlauch und weiß überhaupt nicht, wie ich anfangen soll mit dem Befehl... vielleicht kann mir jemand einen Denkanstoß geben?
     
    Nur sprechenden Menschen kann geholfen werden...

  2. #2
    Avatar von Yaslaw
    Yaslaw Yaslaw ist offline n/a
    tutorials.de Moderator
    Registriert seit
    Dec 2007
    Ort
    Winterthur(CH)
    Beiträge
    5.205
    ungetestet:
    Code sql:
    1
    2
    3
    4
    5
    6
    7
    8
    
    SELECT
        bestell_id
    FROM
        artilkel AS a
    GROUP BY
        bestell_id
    HAVING
        COUNT(DISITNCT  IF(lieferdatum=0, 'A', 'B')) = 2
    Ich gruppiere nach der Belegnummer.
    Im HAVING zähle ich alle eindeutigen Werten und zwar wie folgt. Ist das leiferdatum 0 , wird ein A gezählt. Ist es ungleich 0, ein B. Mit dem COUNT(DISITINCT ....) gibt es so also nur die Zahlen 1 oder 2. und die 2er wollen wir haben. Also diejenigen, die 0-er Datums und gültige Datums haben.
     
    ---------------------------------------------------------------------------------------------------
    item: Ich habe es mir aus gesundheitlichen Gründen abgewöhnt unformatierten Code zu lesen (Auch SQL-Statements kann man formatieren!)
    item: Tutorial: [PHP][MySQL] Debug Queries
    item: Schreibt mir keine PN mit Fragen die im Forum beantwortet werden können - ich mache kein persönliches coaching
    item: Bitte zur besseren Lesbarkeit PHP-Code in [PHP]...[/PHP], SQL in [SQL]...[/SQL], Visual Basic in [VB]...[/VB] etc. schreiben

  3. #3
    Avatar von atlantyz
    atlantyz atlantyz ist offline Mitglied Gold
    Registriert seit
    Apr 2007
    Ort
    Wetzlar (Hessen)
    Beiträge
    147
    Vielen Dank, das funktioniert. Mit Having und einem If in der Abfrage hab ich bisher noch nicht gearbeitet.

    Hab erst gedacht, es funktioniert nicht, aber das war ein Fehler von mir: hatte in meiner DB keine Bestellungen, auf die das Gesuchte überhaupt zutrifft

    Ich danke dir vielmals
     
    Nur sprechenden Menschen kann geholfen werden...

Ähnliche Themen

  1. MySQL: Abfrage über zwei Tabellen ohne identische Feldnamen
    Von metty im Forum Relationale Datenbanksysteme
    Antworten: 2
    Letzter Beitrag: 20.12.10, 09:41
  2. Antworten: 1
    Letzter Beitrag: 17.12.10, 17:41
  3. MySQL-Abfrage über zwei Tabellen und zwei Zeilen
    Von bnc-bang im Forum Relationale Datenbanksysteme
    Antworten: 7
    Letzter Beitrag: 13.04.07, 20:43
  4. Antworten: 3
    Letzter Beitrag: 12.04.07, 18:19
  5. MySQL: okmplizierte Abfrage über zwei Tabellen und Sortierung nach SUM
    Von Paula im Forum Relationale Datenbanksysteme
    Antworten: 0
    Letzter Beitrag: 08.09.05, 10:14