Announcement

Collapse
No announcement yet.

WHERE nur wenn Feld nicht leer

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

  • WHERE nur wenn Feld nicht leer

    Hallo allerseits,

    ist folgendes mit SQL denkbar?

    Code:
    SELECT field1 FROM table1
    WHERE field1 = (SELECT field2 FROM table2)
    Der WHERE-Teil soll aber nur abgetestet werden, falls sich in field2 von table2
    überhaupt ein Wert befindet, d.h. falls field2 leer ist, soll field1 auf jeden Fall auch
    ausgewählt werden.

    Gibt es da mit SQL irgendeine clevere Lösung? Irgendwelche Funktionen?
    Vielen Dank für eure Anregungen!

    Gruß,
    Tom

  • #2
    Hi,

    so etwas macht man üblicherweise mit einem OUTER-JOIN. Nur sehe ich hier den Sinn nicht ganz, da Du ja aus Table2 gar nichts auswählst. Da kannst Du ja gleich:

    SELECT field1 FROM table1

    schreiben. Oder hast Du hier wieder stark abgekürzt
    docendo discimus

    Comment


    • #3
      Ja, sorry, in dem inneren SELECT steht dann natürlich auch nochmal eine WHERE-Klausel.
      Ich hab's wieder mit CONCAT hinbekommen, diesmal umgekehrt, also:
      Code:
      SELECT field1 FROM table 1
      WHERE (SELECT field2 FROM table2 WHERE field2=wert) LIKE CONCAT("%",field1,"%")
      Und eigentlich ist nicht mal das komplett. Sieht sehr unschön aus, oder?
      Aber ne andere Möglichkeit seh ich nicht.

      Gruß,
      Tom

      Comment


      • #4
        Hallo Tom,

        deine Fragestellung hat mal wieder nichts mit deiner präsentierten Antwort zu tun .
        Originally posted by bps-tom View Post
        Code:
        SELECT field1 FROM table1
        WHERE field1 = (SELECT field2 FROM table2)
        Der WHERE-Teil soll aber nur abgetestet werden, falls sich in field2 von table2
        überhaupt ein Wert befindet, d.h. falls field2 leer ist, soll field1 auf jeden Fall auch
        ausgewählt werden.
        Dafür würde ich - wie frauwue auch - einen OUTER JOIN vorschlagen.
        Deine Ergänzung und Lösung
        Originally posted by bps-tom View Post
        Ja, sorry, in dem inneren SELECT steht dann natürlich auch nochmal eine WHERE-Klausel.
        Ich hab's wieder mit CONCAT hinbekommen, diesmal umgekehrt, also:
        Code:
        SELECT field1 FROM table 1
        WHERE (SELECT field2 FROM table2 WHERE field2=wert) LIKE CONCAT("%",field1,"%")
        ...
        hat nun mit erster Frage nicht wirklich was tun. Sie hat einen völlig anderen Hintergrund und die ursprüngliche Bedingung "...d.h. falls field2 leer ist, soll field1 auf jeden Fall auch ausgewählt werden..." wird überhaupt nicht berücksichtigt. Ich gebe auch zu bedenken das es nur solange funktioniert, wie durch "SELECT field2 FROM table2 WHERE field2=wert" nur EIN EINZIGER DS ausgewählt wird.

        Wenn du also möchtest das dir qualifiziert geholfen wird, dann solltest du zukünftig deine Fragestellungen besser überdenken!

        Gruß Falk
        Wenn du denkst du hast alle Bugs gefunden, dann ist das ein Bug in deiner Denksoftware.

        Quellcode ohne ein Mindestmaß an Formatierung sehe ich mir nicht an! Ich leiste keinen Privatsupport per Mail oder PN!

        Comment

        Working...
        X