SELECT über 2 Tabellen mit mehreren Abfragen

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

  • SELECT über 2 Tabellen mit mehreren Abfragen

    Hallo zusammen!

    Ich habe ein kleines Problem.

    Ich hab eine Tabelle in der eine Auftragsnummer gespeichert ist und einen Status. In der 2. Tabelle sind die "Positionen" zu den Aufträgen.

    Kurz zusammen gefasst:
    1. Tabelle "ord":
    oder_id | status

    2. Tabelle "postitionen":
    order_id | pos_id | status

    Nun möchte man von den Positionen alle Auftrage mit den Status
    nicht "p3" oder nicht "p1" oder nicht "p2" und status="p7" und von ord mit dem Status "o1"

    Code:
    SELECT DISTINCT ord.order_id, position.status FROM ord 
    INNER JOIN position ON ord.order_id=position.order_id
    WHERE ord.status='o1' AND ((position.status!='p3' OR 
     position.status!='p1' OR  position.status!='p2') AND 
    (position.status='p7'))
    Problem: Es gibt zu den Aufträgen beliebig viele Positionen mit den verschiedensten Status. Somit funktioniert das SQL nicht richtig da eine Position nicht 2 Status haben kann.

    Hat mir jemand eine Idee, wie man das am einfachsten auslesen kann?
    Hab mal was von sogenannten "views" gelesen, aber die funktionieren ja bei Mysql 4.x noch nicht?
    Soll ich lieber grad direkt eine temporäre Tabelle erstellen und dann halt alles via Code füllen? DB wäre halt schon viel schneller...

    Vielen Dank für euere Hilfe!
    samic
    Blog: busyboy.ch
    Portfolio: flinkthink.ch

  • #2
    Die Abfrage ist so erst mal viel zu umständlich. Die ganzen nicht kannst Du Dir sparen
    nicht "p3" oder nicht "p1" oder nicht "p2" und status="p7" ist dasselbe wie status = 'p7'
    Code:
    SELECT DISTINCT ord.order_id, position.status FROM ord 
    INNER JOIN position ON ord.order_id=position.order_id
    WHERE ord.status='o1' AND position.status='p7'
    reicht völlig

    Es gibt zu den Aufträgen beliebig viele Positionen mit den verschiedensten Status. Somit funktioniert das SQL nicht richtig da eine Position nicht 2 Status haben kann
    Versteh nicht, was Du meinst. Vielleicht musst Du Deine Bedingung bzw. das was nicht funktioniert nochmal besser formulieren.
    Die zehn Gebote sind deswegen so kurz und logisch, weil sie ohne Mitwirkung von Juristen zustande gekommen sind. (Charles de Gaulle)

    Kommentar

    Lädt...
    X