Announcement

Collapse
No announcement yet.

Mehrere Tabellen logisch verbinden

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

  • Mehrere Tabellen logisch verbinden

    Hi ,

    Ich habe zwei Tabellen. Die erste enthält Informationen über verschiedene Städte:

    Locations:
    Code:
    locID     |   locationID    |  locationName    |  countryCode    |
    1         |      2922239    |     Berlin       |      de         |
    2         |      291074     |     Paris        |      fr         |
    3         |      295522     |    Orlando       |      us         |
    3         |      292345     |    Tokyo         |      jp         |
    In einer zweiten Tabelle sind alternative Namen für Städte gespeichert. Es kann vorkommen, dass es für einen Eintrag in der Locations Tabelle, keine Entsprechung, also keinen alternativen Namen gibt:

    AlternateNames:

    Code:
    altNameID |   locationID    |  alternateName    |
    1         |      2922239    |     Berlino       | 
    2         |      2922239    |     Berlina       |
    3         |      291074     |     Parisa        |
    4         |      291074     |     Pariso        | 
    5         |      295522     |     Orlandola     |
    6         |      295522     |     Orlandolo     |
    Ich würde durch eine Abfrage gerne die locationID, den Namen und den countryCode einer Location erhalten, wenn zum Beispiel nach dem Namen "berlin" oder "ber" gesucht wird.

    Code:
    |   locationID   |   name       |  countryCode    |
    |   2922239      |   Berlin     |        de       |
    Wenn der Benutzer allerdings nach "Berlino" sucht, dann würde ich gerne den alternateName erhalten:


    Code:
    |   locationID   |   name       |  countryCode    |
    |   2922239      |   Berlino    |        de       |

    Dabei hat ein "locationName" die höhere Priorität als ein "alternateName", sollte der Suchbegriff auf beide zutreffen.

    Ich kriege es nicht hin, eine Abfrage zu bauen, die genau dies ermöglicht. Da der Name im Ergebnis aus unterschiedlichen Tabellen kommen kann, muss ich dies irgendwie logisch abfragen.

    Ich wäre sehr dankbar, wenn mir da jemand helfen könnte!

  • #2
    ungefähr so
    [HIGHLIGHT="SQL"]SELECT LocationID, COALESCE (A.AlternateName, L.LocationName), L.CountryCode
    FROM Locatioans AS L
    LEFT JOIN AlternateNames AS A ON L.locationID = A.locationID
    AND A.AlternateName = 'Berlino'
    WHERE locationName LIKE 'Ber%' [/HIGHLIGHT]

    Comment

    Working...
    X