Mehrere Tabellen durchsuchen mit ein Ergebnis [Kennzeichensuche] - SQL

  • Moin,


    ich habe zwei Tabellen, einmal fractionvehicles und einmal vehicles. fractionvehicles hat die Spalten fractionID und plate, vehicles hat die Spalten Owner und plate.


    Ich möchte, das wenn mein gesuchtes Wort in einer Tabelle übereinstimmt, dann nur das dieses Ergebnis angezeigt wird, alle anderen Spalten der Tabelle wo das gesuchte Wort nicht vorhanden ist, sollen auf 0 gesetzt werden.


    Momentan habe ich es so:


    SQL
    SELECT a.plate, a.fractionID, b.Owner, b.plate FROM fractionvehicles a, vehicles b WHERE a.plate = 'test' OR b.plate = 'test'


    Der Wert Test ist bei plate in fractionvehicles mit der fractionID 4 einmalig vorhanden.


    Das Ergebnis ist:


    |plate|fractionID|Owner|plate|
    test 4 2 HGD 200
    test 4 4 FCK 201



    Ich möchte aber, dass dieses Ergebnis so aussieht:


    |plate|fractionID|Owner|

    test 4 0


    Da test nur in fractionvehicles bei fractionID vorhanden ist und Owner 0, weil kein Fahrzeug in vehicles das Kennzeichen test besitzt.


    Habt ihr eine Idee?

    Wer PALWAL-Sternchen vergibt, bekommt aus Prinzip ein Like 😏


    @palwal Donald Trump ist einer der besten Präsidenten welche die USA je hatte, meine Meinung.

  • Hey, meinst du evtl. das?

    SQL
    SELECT fractionvehicles.plate AS plate, fractionvehicles.fractionID AS fractionID, COALESCE(vehicles.Owner, '0') AS Owner
    FROM fractionvehicles
    LEFT JOIN vehicles 
    ON fractionvehicles.plate=vehicles.plate;
    WHERE fractionvehicles.plate = 'test' LIMIT 1

    sollte dann diese Ausgabe haben :

    |plate|fractionID|Owner|

    test 4 0

    (falls COALESCE nicht geht dann zu ISNULL ändern)


    Evtl. habe ich es aber auch falsch verstanden.

    Ich hoffe, es ist dennoch hilfreich ^^.

  • Das funktioniert zwar so wie es sollte, aber wenn Das Privatfahrzeug (vehicles) das Kennzeichen test hat? Die Abfrage soll ja beide Tabellen bei der Kennzeichensuche berücksichten.

    Wer PALWAL-Sternchen vergibt, bekommt aus Prinzip ein Like 😏


    @palwal Donald Trump ist einer der besten Präsidenten welche die USA je hatte, meine Meinung.

  • Habe ich jetzt nicht drauf geachtet, schau mal ob es mit einem FULL JOIN geht ^^.

    SQL
    SELECT COALESCE(fractionvehicles.plate, '0') AS plate, COALESCE(fractionvehicles.fractionID, '0') AS fractionID, COALESCE(vehicles.Owner, '0') AS Owner
    FROM fractionvehicles
    FULL JOIN vehicles 
    ON fractionvehicles.plate=vehicles.plate
    WHERE fractionvehicles.plate = 'test' OR vehicles.plate = 'test' LIMIT 1


    bzw. wenn es ja kein fractionvehicle.plate gibt, dann geben wir das vehicles.plate aus.

    musst du aber mal testen, weiß nicht ob es so funktioniert :D


    SQL
    SELECT COALESCE(fractionvehicles.plate, vehicles.plate) AS plate, COALESCE(fractionvehicles.fractionID, '0') AS fractionID, COALESCE(vehicles.Owner, '0') AS Owner
    FROM fractionvehicles
    FULL JOIN vehicles 
    ON fractionvehicles.plate=vehicles.plate
    WHERE fractionvehicles.plate = 'test' OR vehicles.plate = 'test' LIMIT 1
  • Beitrag von Mogly1 ()

    Dieser Beitrag wurde vom Autor gelöscht ().