0

私が達成しようとしているのは、tableAから1行、tableBから1行を選択し、結果を結合することです(列名は異なります)。

tableAのレイアウトは次のとおりです。

+----------------------------+--------------+------+-----+---------------------+----------------+
| Field                      | Type         | Null | Key | Default             | Extra          |
+----------------------------+--------------+------+-----+---------------------+----------------+
| user_id                    | int(11)      | NO   | PRI | NULL                | auto_increment |
| nickname                   | varchar(32)  | NO   |     | NULL                |                |
| password                   | varchar(129) | NO   |     | NULL                |                |
| mafia_id                   | int(11)      | NO   |     | 0                   |                |
+----------------------------+--------------+------+-----+---------------------+----------------+

そしてtableBのこれ:

+-------------+-------------+------+-----+---------+----------------+
| Field       | Type        | Null | Key | Default | Extra          |
+-------------+-------------+------+-----+---------+----------------+
| mafia_id    | int(11)     | NO   | PRI | NULL    | auto_increment |
| mafia_name  | varchar(32) | NO   |     |         |                |
| mafia_tag   | varchar(5)  | NO   |     |         |                |
| mafia_color | int(11)     | NO   |     | 0       |                |
| mafia_car   | int(11)     | NO   |     | 0       |                |
| mafia_base  | int(11)     | NO   |     | 0       |                |
+-------------+-------------+------+-----+---------+----------------+

私は次のようなクエリを試しました:

SELECT *
FROM users

WHERE users.nickname = 'Gamer_Z'

UNION

SELECT * FROM mafia
WHERE mafia.mafia_id = (
    SELECT users.mafia_id
    FROM users
    WHERE users.nickname = 'Gamer_Z'
);

この:

SELECT *
FROM users
WHERE nickname = 'Gamer_Z'
INNER JOIN mafia ON mafia.mafia_id = users.mafia_id;

しかし、それらのクエリはエラーを出します、私は他のいくつかを試しました、しかしこれらのものはよく見えますか?

私もこれらの質問を読みました:

MySQLで行数が異なる2つのテーブルを結合するにはどうすればよいですか?

MySQLで複数のクエリ結果を組み合わせる(列ごと)

しかし、私は自分の問題を解決できないようです。

私が望む出力フォーマットはこれです:

|users.user_id|users.nickname|users.password|users.mafia_id|mafia.mafia_name|mafia.mafia_tag|mafia.mafia_color|mafia.mafia_car|mafia.mafia_base|

MySQL(5)で達成しようとしていることに対して正しいクエリを作成するにはどうすればよいですか?前もって感謝します!

\編集::


私はほとんど一つのことを忘れました!mafia_idがtableBに存在しない場合は、tableA行をリチュードする必要があります。(したがって、ユーザーはマフィアにいないので、デフォルトのユーザーデータをロードするだけです)

4

2 に答える 2

2

WHERE条件はJOIN、前ではなく、後に置く必要があります。

SELECT    *
FROM      users a
LEFT JOIN mafia b ON a.mafia_id = b.mafia_id
WHERE     a.nickname = 'Gamer_Z'
于 2012-08-04T19:02:20.283 に答える
0

結合が間違っています

する必要があります

SELECT*FROMユーザーaJOINmafia b ON a.mafia_id = b.mafia_id and a.nickname ='Gamer_Z'

于 2012-08-04T19:04:28.067 に答える