2016-05-15 16 views
0

Ich verwende eine Abfrage:Wie wählt man mit UNION alle Felder einschließlich NULL?

SELECT idFavourite AS entity, 'favourite' AS type 
FROM favourite 
WHERE idCar = 1 AND idUser = 1 
UNION 
SELECT idLike AS entity, 'likes' AS type 
FROM `likes` 
WHERE idCar = 1 AND idUserLiked = 2 

Wenn zweite Bedingung ist nicht richtig, diese Abfrage gibt nur eine type. Wie kann ich immer zwei type von beiden Abfragen bekommen?

Neue Abfrage:

SELECT likes.idLike AS likes, favourite.idFavourite AS fav FROM favourite 

LEFT JOIN `likes` ON (likes.idCar = favourite.idCar) AND (likes.idUserLiked = favourite.idUser) AND 
likes.idCar = 1 AND likes.idUserLiked = 2 
+1

bitte gewünschte Ausgabe mit Spalte Name und dort relation –

Antwort

1

Verwenden Sie zuerst union all, wenn Sie den Aufwand für das Entfernen von Dubletten entstehen soll (die in diesem Fall nicht möglich ist). Sie tun können:

SELECT idFavourite AS entity, 'favourite' AS type 
FROM favourite 
WHERE idCar =1 AND idUser = 1 
UNION ALL 
SELECT idLike AS entity, 'likes' AS type 
FROM `likes` 
WHERE idCar = 1 AND idUserLiked = 2 
UNION ALL 
SELECT NULL, 'likes' 
FROM (SELECT 1 as x) t 
WHERE NOT EXISTS (SELECT 1 FROM likes WHERE idCar = 1 AND idUserLiked = 2); 

Alternativ, wenn Sie nur höchstens eine Zeile aus der zweiten Unterabfrage erwarten, dann Aggregation verwenden:

SELECT idFavourite AS entity, 'favourite' AS type 
FROM favourite 
WHERE idCar =1 AND idUser = 1 
UNION ALL 
SELECT MAX(idLike) AS entity, 'likes' AS type 
FROM `likes` 
WHERE idCar = 1 AND idUserLiked = 2; 

Eine Aggregation Abfrage ohne GROUP BY immer gibt eine Zeile. In diesem Fall wird entityNULL sein, wenn die Klausel WHERE alles herausfiltert.

+0

Die letzte Abfrage gibt mir wieder nur eine Zeile – Gaga

+0

@Gaga. . . Die Antwort war auf den Likes-Tisch gerichtet, weil deine Frage (für mich) das Problem war. Die gleichen Ideen gelten jedoch auch für die erste Unterabfrage. Verwenden Sie daher "max (idFavorit)" in der ersten Unterabfrage. –

+0

Was denkst du über meine neue Abfrage mit JOIN? – Gaga

Verwandte Themen