2016-11-23 1 views
0

tabelle1 - customer_dataSub-Abfrage Unter SQL wählen auf 3 Tabellen

C_Id (int)

Name (varchar)

table2 - account_data

a_id (int)

c_id (int) -> verwenden Sie customer_data. c_id

plan_id (int)

table3 - game_data

g_id (int)

sort (int)

a_id (int) ->account_data verwenden. a_id

GAME_NAME (var)

I Unter Abfrage mit dem game_data von account_data auszuwählen. wie folgt aus:

SELECT `a_id`,`c_id`,`plan_id`, 
(SELECT `game_name` FROM `game_data` WHERE `a_id` = a.`a_id` ORDER BY `sort` ASC LIMIT 1) as main_game 
FROM `accoubt_data` AS a WHERE `a_id` > 0 ORDER BY `id` DESC 

Diese SQL ist die Arbeit für ausgewählte game_data von account_data

Aber ich kann es nicht verwenden game_data von customer_data

zu wählen, wie ich etwas tun kann?

customer_data 
+----------------------+ 
| c_id  | name  | 
+----------------------+ 
| 1001  | Joe  | 
| 1002  | John  | 
| 1003  | David | 
+----------------------+ 

account_data 
+-------------------------------------+ 
| a_id  | cid  | plan_id  | 
+-------------------------------------+ 
| 6015  | 1002  | 34   | 
| 6028  | 1003  | 1   | 
| 6088  | 1001  | 9   | 
+-------------------------------------+ 

game_data 
+--------------------------------------+ 
| g_id  | game_name | a_id | 
+--------------------------------------+ 
| 8011  | GTA5   | 6015 | 
| 8023  | WWE2016  | 6028 | 
| 8088  | FIFA16  | 6088 | 
| 8095  | FIFA17  | 6088 | 
| 8086  | FIFA15  | 6088 | 
+--------------------------------------+ 

ist diese Basis wählen

ich diese Daten aus customer_data.c_id erhalten müssen

+--------------------------------------+ 
| c_id | name  | frist_game  | 
+--------------------------------------+ 
| 1001 | Joe  | FIFA15   | 
| 1002 | John | GTA5    | 
| 1003 | David | WWE2016   | 
+--------------------------------------+ 

C_Id> a_id> g_id ORDER BY sortieren ASC

+0

Sie haben sich sehr viel Mühe gegeben, Ihre Tabellen einzugeben. Wäre es nicht einfacher gewesen, die Pastenausgabe von 'show create table' zu ​​kopieren? – e4c5

+0

Ich hatte meinen Themeninhalt bearbeitet, vielen Dank – Sky

Antwort

1
mit

Versuchen teilnehmen:

SELECT c.`c_id`,c.name, 
     (SELECT `game_name` FROM `game_data` 
     WHERE `a_id` = a.`a_id` 
     ORDER BY `sort` ASC LIMIT 1) as first_game 
FROM `accoubt_data` a 
JOIN customer_data c ON(a.c_id = c.c_id) 
WHERE a.`a_id` > 0 
ORDER BY a.`id` DESC 
+0

hi sagi, ich brauche die customer_data.c_id, um die Spieldaten zu erhalten. Ich hatte meinen Themeninhalt bearbeitet. Vielen Dank. – Sky

+0

@Sky Siehe Bearbeiten. – sagi

+0

danke so viel sagi !! – Sky

0

versuchen Sie dies

SELECT cd.c_id,cd.name, first_game 
FROM account_data ad 
inner join game_data gd ON ad.a_id = gd.a_id order by gd.g_id,ad.a_id as games 
inner join customer_data cd on games.c_id = cd.c_id order by cd.c_id 

Ich hoffe, das funktioniert.