0

これらの2つのテーブルがある場合:

table_user
Id   name   lname
1    Mark   Brown
2    Martha Fox

table_score_start:
user_Id  score
2        5

table_score_last:
user_Id  score
1        3
2        4

次のクエリ結果を表示するにはどうすればよいですか?

ID 名前 名前 スコア スコア 1 マーク ブラウン 3 2 マーサ フォックス 5 4

私は試した

    SELECT table_user.Id, table_user.name, table_user.lname, table_score_start.score,
 table_score_last.score FROM table_user, table_score_start, table_score_last

しかし、それは機能しません

私も試しました

    SELECT table_user.Id, table_user.name, table_user.lname, table_score_start.score,
 table_score_last.score FROM table_user, table_score_start, table_score_last WHERE table_user.Id = table_score_start.user_Id

table_score_start と table_score_last の 1 つまたは 2 つのテーブルにないレコードも含めて、すべてのレコードを表示したい

4

7 に答える 7

2

以下のクエリを試してください。

SELECT u.Id, u.name, u.lname, s.score, l.score FROM table_user u, 
table_score_start s, table_score_last l WHERE u.id = s.user_id
AND u.id = l.user_id

または結合を使用して:

SELECT u.Id, u.name, u.lname, s.score, l.score FROM table_user u
INNER JOIN table_score_start s ON (u.id = s.user_id)
INNER JOIN table_score_last l ON ( u.id = l.user_id)

MySql JOIN の詳細については、次の記事を参照してください: http://dev.mysql.com/doc/refman/5.0/en/join.html

于 2013-05-10T19:00:41.130 に答える
2
select a.Id, a.name, a.lname, b.score as start_score, c.score as last_score from table_user a 
inner join table_score_start b on (a.Id = b.user_Id) 
inner join table_score_last c on (a.Id = c.userId)

inner joinまたはleft joinあなたのニーズに依存します。

于 2013-05-10T19:00:47.740 に答える
0

mysqlを使用JOIN....

これは簡単なガイドです...

http://www.copterlabs.com/blog/optimizing-sql-queries-with-joins/

于 2013-05-10T19:01:11.597 に答える
0
SELECT `user`.*, `start`.score, `last`.score 
FROM table_user `user`, table_score_start `start`, table_score_last `last` 
WHERE `start`.user_Id = `user`.Id 
AND `last`.user_Id = `user`.Id;
于 2013-05-10T19:02:34.993 に答える
0

このようなものは、トリックを行う必要があります:

SELECT u.ID, u.name, u.lname, start.score, last.score
FROM table_user AS u LEFT JOIN table_Score_Start AS Start on u.ID = Start.ID
LEFT JOIN table_Score_last AS Last on u.id = Last.ID

それは私の頭のてっぺんから外れていますが、それはあなたを球場に連れて行くはずです. MySQL の構文を微調整する必要があるかもしれません。私は SQL Server で作業してきました。

于 2013-05-10T19:04:22.410 に答える
0

SELECT複数のテーブルに対してを実行する場合はJOIN、それらのテーブル間の条件も含める必要があります。ここからJOINSについて読み始めることができます

以下を試してください。また、テーブルのエイリアスを使用しないでください。これにより、コードが読みやすくなりますが、実行には影響しません。

SELECT  u.Id
        ,u.name
        ,u.lname
        ,ss.score
        ,sl.score
FROM    table_user u
INNER JOIN
        table_score_start ss
ON      ss.user_ID = u.Id
INNER JOIN
        table_score_last sl
ON      sl.user_ID = u.Id  
于 2013-05-10T19:05:20.113 に答える
0

他の回答ではが表示INNER JOINされますが、開始スコアまたは終了スコア (またはその両方) を持たないレコードも表示する必要があるため、次のLEFT JOINように使用する必要があります。

SELECT a.Id, a.name, a.lname, b.score as start_score, c.score as last_score 
FROM table_user a 
LEFT join table_score_start b on (a.Id = b.user_Id) 
LEFT join table_score_last c on (a.Id = c.user_Id)
于 2013-05-10T19:05:53.130 に答える