2017-03-03 11 views
0

Ich habe versucht, die folgenden SELECT-Anweisungen mit UNION beizutreten, aber am Ende bekam ich alle Ergebnisse in der gleichen Spalte. Ich möchte jedoch die Ergebnisse jeder Abfrage in einer separaten Spalte enthalten.MySQL Join mehrere SELECT-Abfrage

SELECT Player_id,Game_id, R1 
FROM poker_hands f, poker_cards a, poker_cards b 
WHERE f.r1 = a.card_name 
AND f.r2 = b.card_name 
AND (f.hand_type = 'Four of kind' 
AND (a.game_value != b.game_value) 
UNION ALL 
/* R2 */ 
SELECT Player_id,Game_id, R2 
FROM poker_hands f, poker_cards a, poker_cards b 
WHERE f.r1 = a.card_name 
AND f.r2 = b.card_name 
AND (f.hand_type = 'High hand' 
AND (a.game_value != b.game_value); 

Ich mag die Ausgabe etwas wie die

Player_id | Game_id | R1 | R2 
0001  | 0002 | | 8S 
0002  | 0003 | 9H | 
0003  | 0004 | 5C | 5S 
0004  | 0005 | | 6D 

Antwort

0

können Sie casestatement verwenden, versuchen Sie wie folgt aus:

SELECT Player_id,Game_id, CASE WHEN f.hand_type = 'Four of kind' THEN R1 ELSE '' END as R1, 
CASE WHEN f.hand_type = 'High hand' THEN R2 ELSE '' END AS R2 
FROM poker_hands f, poker_cards a, poker_cards b 
WHERE f.r1 = a.card_name 
AND f.r2 = b.card_name 
AND (a.game_value != b.game_value AND (f.hand_type = 'High hand' OR f.hand_type = 'Four of kind')); 
0

Angenommen, Ihren Rest der Abfrage richtig ist, es auf diese Art und Weise nutzen. Hardcode null für R2 in der ersten Abfrage und Hardcode null für R1 ist zweite Abfrage.

SELECT Player_id,Game_id, R1 , '' as R2 
FROM poker_hands f, poker_cards a, poker_cards b 
WHERE f.r1 = a.card_name 
AND f.r2 = b.card_name 
AND (f.hand_type = 'Four of kind' 
AND (a.game_value != b.game_value) 
UNION ALL 
/* R2 */ 
SELECT Player_id,Game_id, '' as R1, R2 
FROM poker_hands f, poker_cards a, poker_cards b 
WHERE f.r1 = a.card_name 
AND f.r2 = b.card_name 
AND (f.hand_type = 'High hand' 
AND (a.game_value != b.game_value); 
+0

Es funktionierte, aber wie kann ich die NULL mit dem leeren Raum ersetzen? – user6872853

+0

Überprüfen Sie das Update – Utsav

+0

Ersetzen "Union All" mit "Union" zu entfernen Duplikate – Utsav