Announcement

Collapse
No announcement yet.

Unterabfrage Problem

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Unterabfrage Problem

    Hallo,

    ich möchte so eine Abfrage ausführen aber bekomme einen Fehler:

    select STEP_ID from Bestellung where Artikel_ID like '%ABC.%'
    and
    PRODUCT_ID=(SELECT PRODUCT_ID FROM Bestellung where STEP_ID='step2')

    Die Unterabfrage hat mehr als einen Wert zurückgegeben. Das ist nicht zulässig, wenn die Unterabfrage auf =, !=, <, <=, > oder >= folgt oder als Ausdruck verwendet wird.

    Also, ich möchte alle Steps zurückbekommen, die mit '%ABC.%' anfangen und zu bestimmten Produkten gehören, die wieder STEP_ID='step2' haben.

    Wie kann ich so eine Abfrage bilden?

  • #2
    Deine Unterabfrage ist
    .... (SELECT PRODUCT_ID FROM Bestellung where STEP_ID='step2')
    und diese liefert mehr als 1 Wert, wodurch das mit dem "=" nichr mehr funktioniert. Als Vergleich: sowas wie
    x = 1, 2, 3 ... geht ja auch nicht.

    Was tun?

    Entweder die Unterabfrage begrenzen, zB. mit
    .... (SELECT max(PRODUCT_ID) FROM Bestellung where STEP_ID='step2')
    oder
    .... (SELECT TOP 1 PRODUCT_ID FROM Bestellung where STEP_ID='step2')

    oder mehrere Werte zulassen, das wäre dann so:
    ... and PRODUCT_ID IN (SELECT PRODUCT_ID FROM Bestellung where STEP_ID='step2')
    ... also ein IN statt einem =.

    bye,
    Helmut

    Comment

    Working...
    X