arthur: SQL Abfrage mysql

Hallo,

ich habe eine Tabelle mit Ortsnamen, Plz und eine Id.
Dabei kann die Idr bei mehreren Orten vorkommen, aber es kann auch sein, dass ein Ort mehrfach vorkommt, jeweils mit einer anderen Id.
Eine zweite Tabelle setzt diese Id eindeutig in Bezug zu einem Bezeichnunstext.

Ich brauche nun alle Bezeichnungstexte aus der zweiten Tabelle, wenn ich in der Tabelle mit den Orten nach ort oder plz suche.
Das soll auch funktionieren, wenn mindesten 3 Ziffern bei der plz oder 3 Buchstaben bei dem Ort angegeben wurden.

Ich brauche jetzt zwei Abfragen, 1mal für die Suche über den Ort und einmal über die Postleitzahl.

Irgendwie kriege ich das nicht gebacken.

Vielen dank für Eure regen Antworten :)

  1. Hallo,

    ich habe eine Tabelle mit Ortsnamen, Plz und eine Id.
    Dabei kann die Idr bei mehreren Orten vorkommen, aber es kann auch sein, dass ein Ort mehrfach vorkommt, jeweils mit einer anderen Id.
    Eine zweite Tabelle setzt diese Id eindeutig in Bezug zu einem Bezeichnunstext.

    Ich brauche nun alle Bezeichnungstexte aus der zweiten Tabelle, wenn ich in der Tabelle mit den Orten nach ort oder plz suche.
    Das soll auch funktionieren, wenn mindesten 3 Ziffern bei der plz oder 3 Buchstaben bei dem Ort angegeben wurden.

    Ich brauche jetzt zwei Abfragen, 1mal für die Suche über den Ort und einmal über die Postleitzahl.

    Irgendwie kriege ich das nicht gebacken.

    gib mir
        die Bezeichnungstexte
    aus
        tabelle2
    die mit
        tabelle1
    über
        gleiche id-Werte verknüpft ist
    wobei nur die Datensätze interessieren
        bei denen die plz mit den gleichen Ziffern beginnt wie die Eingabe
        (bei denen der Ort mit den gleichen Buchstaben beginnt wie die Eingabe)

    Dieser Pseudocode läßt sich 1:1 in ganz einfache Abfragen mit einem Join (oder einer Unterabfrage) umsetzen. Was hast Du versucht? Woran bist Du gescheitert?

    Freundliche Grüße

    Vinzenz

    1. Hallo Vinzenz,

      Dieser Pseudocode läßt sich 1:1 in ganz einfache Abfragen mit einem Join (oder einer Unterabfrage) umsetzen. Was hast Du versucht? Woran bist Du gescheitert?

      Schon  alleine an den Begriffen JOIN und Unterabfrage bzw. SUBSELECT.
      Jetzt weiß ich wenigstens nach was ich suchen muss.

      Danke

    2. Zu früh gefreut.

      $SQL = "SELECT * FROM tabelle1 WHERE id =(SELECT id FROM tabelle2 WHERE plz LIKE '715%')";

      -> Subquery returns more than 1 row

      Gruß

      1. Hi,

        $SQL = "SELECT * FROM tabelle1 WHERE id =(SELECT id FROM tabelle2 WHERE plz LIKE '715%')";

        -> Subquery returns more than 1 row

        Wenn du einen Wert auf Gleichheit mit einem von mehreren Werten vergleichen willst, nimmst du dafür nicht =, sondern ...?

        MfG ChrisB

        --
        RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?
        1. Hi,

          $SQL = "SELECT * FROM tabelle1 WHERE id =(SELECT id FROM tabelle2 WHERE plz LIKE '715%')";

          -> Subquery returns more than 1 row

          Wenn du einen Wert auf Gleichheit mit einem von mehreren Werten vergleichen willst, nimmst du dafür nicht =, sondern ...?

          Also einfach das = vor der Klammer des Subselects durch ...? ersetzen?
          Fehlermeldung:
          You have an error in your SQL syntax near '..?(SELECT

          Gruß

        2. Hallo,

          es klappt!

          = durch IN ersetzt und es läuft :)

          Gruß
          und DANKE