SELECT anhand Vergleichswerten

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

  • SELECT anhand Vergleichswerten

    Sorry, aber ich weiß nicht mehr weiter:

    Ich habe 2 Tabellen:

    tabelle1
    ID | Name

    tabelle2
    ID2 | Ort

    Die Werte im Feld ID enthalten 7stellige Strings z.B. "1234567" und im Feld ID2 5stellige, welche die ersten 5 Stellen der ID enthalten z. B. "12345". Jetzt möchte ich alle Datensätze auslesen die mit der Tabelle korrespondieren, also wo bei der ID2 die ersten 5 Ziffern gleich sind wie bei der ID der Tabelle 1.

    Ich habe das so probiert:
    SELECT * FROM tabelle1 JOIN tabelle2 ON ID LIKE ID
    Aber "LIKE" geht ja hier nicht...

    Oder:

    SELECT * FROM tabelle1, tabelle2 WHERE ID LIKE ID2%
    Aber wie ist da die richtige Syntax?

    Bitte um Hilfe...

  • #2
    LEFT(spalte1, 5) = LEFT(spalte2, 5) ist der Vergleich, den du suchst
    Ich denke, also bin ich. - Einige sind trotzdem...

    Kommentar


    • #3
      Super! Das war's. Vielen, vielen Dank!
      Ich hatte das nirgendwo gefunden...

      Jetzt wäre aber noch ein LEFT JOIN interessant, indem ich alle Datensätze der linken Tabelle rauskriege und die mit der rechten Tabelle verknüpfe...

      SELECT * FROM tabelle1 LEFT JOIN tabelle2 ON LEFT(ID,5) = LEFT(ID2,5)
      ist ja nicht korrekt...

      Vieleicht gibt es da auch einen Trick?
      Zuletzt geändert von arka; 18.01.2007, 08:58.

      Kommentar


      • #4
        Ich weiß zwar nicht, ob du die selbe Person bist wie kusti, aber...
        1. Wenn du einen Teil einer String-Spalte auswerten möchtest, sind die FUnktionen zum Arbeiten mit Zeichenketten immer einen Blick wert: http://dev.mysql.com/doc/refman/4.1/...functions.html
        2. Was ist an dem JOIN nicht korrekt?
          Was passiert?
          Was soll passieren?
        Ich denke, also bin ich. - Einige sind trotzdem...

        Kommentar


        • #5
          Sorry für die Verwirrung: kusti = arka (Hatte gestern mein Login nicht parat und mich neu registriert...)

          Ich habe den Query noch mal getestet und festgestellt, dass er doch funktioniert (SELECT * FROM tabelle1 LEFT JOIN tabelle2 ON LEFT(ID,5) = LEFT(ID2,5))

          Ich hatte nur versucht eine zusätzliche Bedingung für je ein weiteres Feld in den 2 Tabellen reinzubringen und mich dabei verhaspelt.

          So in der Art:
          ... SELECT * FROM tabelle1 AS t1 LEFT JOIN tabelle2 AS t2 ON LEFT(t1.ID,5) = LEFT(t2.ID2,5) AND t1.Spalte = t2.Spalte

          Aber ich möchte das Forum nicht überstrapazieren ;-)

          Kommentar

          Lädt...
          X