Announcement

Collapse
No announcement yet.

Subselect ersetzen

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

  • Subselect ersetzen

    Hallo zusammen,
    ich bin am verzweifeln.

    Ich habe folgende Tabelle:

    Hier die Spalten:
    Spalte1,Spalte2
    Und hier die Zeilen:
    Container1,Inhalt10
    Container1,Inhalt20
    Container1,Inhalt30
    Container2,Inhalt11
    Container2,Inhalt20
    Container2,Inhalt30
    Container3,Inhalt20
    Container3,Inhalt99

    Ich möchte nun wissen, welcher Container NICHT Inhalt1% (% = Platzhalter/Wildcard) hat?
    Ergebnis sollte also nur Container3 sein...!!

    SELECT DISTINCT(Spalte1) FROM TABELLE WHERE Spalte1 NOT IN(
    SELECT Spalte1 FROM TABELLE WHERE Spalte2 LIKE 'Inhalt1%'
    )

    Diese Abfrage sollte eigentlich funktionieren aber dauert ewig bis garnicht.... (trotz Index auf Spalte1 und Spalte2)

    Kann ich diese Abfrage auch ohne Subselect stellen?

  • #2
    Hallo,

    Wie waers mit diesem Command:

    SELECT DISTINCT(Spalte1) FROM tabelle WHERE LEFT(Spalte1, LEN('Inhalt1')) <> 'Inhalt1'

    Vielleicht passt dir dieser Command besser.
    *-- robert.oh. --*

    Comment


    • #3
      Hallo,

      eine Alternative wäre:
      [highlight=sql]
      SELECT DISTINCT(o.Spalte1)
      FROM TABELLE o WHERE NOT exists (
      SELECT 1 FROM TABELLE i
      WHERE i.Spalte1 = o.Spalte1
      and i.Spalte2 LIKE 'Inhalt1%')
      [/highlight]

      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


      • #4
        Originally posted by robert.oh. View Post
        Hallo,

        Wie waers mit diesem Command:

        SELECT DISTINCT(Spalte1) FROM tabelle WHERE LEFT(Spalte1, LEN('Inhalt1')) <> 'Inhalt1'

        Vielleicht passt dir dieser Command besser.
        Hallo,

        das dürfte nicht das gewünschte Ergebnis bringen, da es nur eine komplizierte Umschreibung von
        [highlight=sql]
        SELECT DISTINCT(Spalte1)
        FROM tabelle
        WHERE Spalte1 not like 'Inhalt1%'
        [/highlight]
        ist. Und das würde hier auch Container1 und Container2 liefern.

        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