MySQL Abfrage aus mehreren Tabellen

  • Allgemein

Es gibt 3 Antworten in diesem Thema. Der letzte Beitrag () ist von petaod.

    MySQL Abfrage aus mehreren Tabellen

    Moin,

    ich möchte in 4 Tabellen eine Abfrage möglichst in einem Query realisieren, die Tabellen sind nicht mit einander verknüpft, ich möchte lediglich in allen 4 Tabellen nach einem Wert suchen und in der Tabelle, wo er gefunden wird, soll mir die Spalte angezeigt werden. Allerdings will das mit meinen momentanten Bemühungen nicht klappen. Bisher sieht mein Query wie folgt aus

    SQL-Abfrage

    1. SELECT t1.alias AS `t1Alias`, t2.alias AS `t2Alias`, t3.alias AS `t3Alias` FROM `tabelle1` AS `t1`, `tabelle2` AS `t2`, `tabelle3` AS `t3` WHERE t1.alias = 'test' OR t2.alias = 'test' OR t3.alias = 'test' LIMIT 1


    Es wird mir zwar die Spalte angezeit wo der Alias gefunden wurde, aber von allen anderen Tabellen steht auch was in den Spalten drin, obwohl dort die WHERE Bedingung gar nicht erfüllt ist.
    Also sieht meine Ausgabe momentan so aus

    Quellcode

    1. t1Alias | t2Alias | t3Alias
    2. hallo | foo | test


    wenn der Alias in Tabelle 3 gefunden wurde. Leider bringt mir das nichts, die anderen Felder müssen leer (NULL) sein wenn der Alias nicht in den Tabellen vorkommt.
    Hat jemand hierfür eine Lösung? Würde ungern 3 Querys machen und die 3 Tabellen einzelnt prüfen.
    Ich denke mal leider wirst du da nicht um drei SELECT's herum kommen.
    Außer du verwendest eine Stored Procedure oder ne View, bin mir allerdings nicht sicher ob es die in MySQL gibt.

    Es fehlt halt einfach die ID oder so um nen LEFT JOIN richtig anzusetzen.

    Was spricht denn gegen 3 einzelne Querys?
    Hey @Dodo,
    meinst du evtl. sowas?

    SQL-Abfrage

    1. SELECT
    2. IF(t1.alias = 'test', t1.alias, NULL) AS t1Alias,
    3. IF(t2.alias = 'test', t2.alias, NULL) AS t2Alias,
    4. IF(t3.alias = 'test', t3.alias, NULL) AS t3Alias
    5. FROM t1, t2, t3 LIMIT 1


    Gruß
    Milaim
    "Wenn jemand in einem Betrieb unverzichtbar ist, dann ist dieser Betrieb falsch organisiert." - Roberto Niederer