2012-11-15 16 views
8

Ich habe zwei MySQL-AbfragenMySQL zwei Abfragen kombinieren

QUERY: 

SELECT sodnik_1 FROM prihodnji_krog WHERE file_id='8778' AND sodnik_1 != '' 
UNION 
SELECT sodnik_2 FROM prihodnji_krog WHERE file_id='8778' AND sodnik_2 != '' 
UNION 
SELECT sodnik_3 FROM prihodnji_krog WHERE file_id='8778' AND sodnik_3 != '' 
UNION 
SELECT sodnik_4 FROM prihodnji_krog WHERE file_id='8778' AND sodnik_4 != '' 

QUERY: 
SELECT value FROM notification_sodniki WHERE user_id='16' 

OUTPUT LOOKS LIKE THIS: 

Name 1 
Name 2 
Name 3 
Name 4 

IN BOTH TABLES 

Sie geben mir 1 Spalte. Ich möchte einen Cross-Join durchführen und nur die Werte zurückgeben, die in beiden Select-Abfragen vorhanden sind. Ist das möglich ?

Antwort

21

Wie wäre es

SELECT * FROM 
(
    SELECT sodnik_1 as value FROM prihodnji_krog WHERE file_id='8778' AND sodnik_1 != '' 
    UNION 
    SELECT sodnik_2 as value FROM prihodnji_krog WHERE file_id='8778' AND sodnik_2 != '' 
    UNION 
    SELECT sodnik_3 as value FROM prihodnji_krog WHERE file_id='8778' AND sodnik_3 != '' 
    UNION 
    SELECT sodnik_4 as value FROM prihodnji_krog WHERE file_id='8778' AND sodnik_4 != '' 
) x INNER JOIN 
(
    SELECT value FROM notification_sodniki WHERE user_id='16' 
) y 
ON x.value = y.value 

Wenn Sie Unterabfragen in einer FROM-Klausel verwenden, wie es ist, wenn Sie temporäre Tabellen machen. Dann mit dem Alias ​​können Sie auf sie verweisen und tun Sie eine INNER JOIN

+0

Es gibt mir illegale Mischung von Kollatierungen. Aber ich denke du bist sehr nah dran. – litenull

+0

1 sec, ich werde das beheben – Marc

+0

Ja, die Codierung ist anders. Einen Moment. – litenull

Verwandte Themen