私が達成しようとしているのは、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つのテーブルを結合するにはどうすればよいですか?
しかし、私は自分の問題を解決できないようです。
私が望む出力フォーマットはこれです:
|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行をリチュードする必要があります。(したがって、ユーザーはマフィアにいないので、デフォルトのユーザーデータをロードするだけです)