Я немного смущен, о том, к чему присоединиться и где.INNER JOIN? результаты по двум столбцам
У меня есть база данных mysql, которая делает ставки в IRC-клиенте.
Он хранит имена пользователей, их догадку и в конечном итоге исход игры они делают ставку на
outcomes_table подобно этому
+--------------+
| id outcome |
+--------------+
| 1 win |
| 2 lose |
+--------------+
user_table, как это
+----+----------+----------+-------------------+
| id | username | guess_id | bettingsession_id |
+----+----------+----------+-------------------+
| 1 | name1 | 1 | 1 |
| 2 | name2 | 1 | 2 |
| 3 | name3 | 2 | 2 |
4 name1 1 2
+----+----------+----------+-------------------+
betting_session_table заключается в следующем:
+----+---------+
| id | result |
+----+---------+
| 1 | 1 |
| 2 | 2 |
+----+---------+
Я хочу, чтобы получить список ставок пользователя с их догадка присоединился к результату, а результат присоединился к
например: выбрать каждую строку другой бет имя пользователя, угадывать (выигрыш/проигрыш), результат (выигрыш/проигрыш)
что-то вроде:
SELECT *
FROM user_table
INNER JOIN betting_session_table ON bettingsession_id = betting_session_table.id
INNER JOIN outcomes_table ON guess_id = outcomes_table.id
INNER JOIN outcomes_table ON result = outcomes_table.id
WHERE username = 'name1'
Однако это не работает, не уверен, но я не думаю, что это позволяет мне присоединиться к outcomes_table.id дважды к двум разным колонкам, но я хотите, потому что пользователь может сделать ставку «выиграть», но результат «проиграет» и т. д.
EG: Я хочу вернуться
+----+----------+----------+----+---------+--------------------+----+--------+----+---------+
| id | username | guess_id | id | outcome | betting_session_id | id | result | id | outcome |
+----+----------+----------+----+---------+--------------------+----+--------+----+---------+
| 1 | name1 | 1 | 1 | win | 1 | 1 | 1 | 1 | win |
| 4 | name1 | 1 | 1 | win | 2 | 2 | 2 | 2 | lose |
+----+----------+----------+----+---------+--------------------+----+--------+----+---------+
EDIT:
В конце концов я использовал два отдельных псевдонима для каждого соединения, которое похоже на работу; вот код из фактической таблицы, которая работает, а не приведенный выше пример.
SELECT *
FROM `xcoins_betting_log` A
LEFT JOIN `xcoins_betting_session` B ON A.betting_session_id = B.id
LEFT JOIN `xcoins_common_tables`.`xcoins_betting_outcomes` C ON A.guess_id = C.id
LEFT JOIN `xcoins_common_tables`.`xcoins_betting_outcomes` D ON B.outcome_id = D.id
WHERE `user_id` =9
"и результат присоединился к ...." ???? Немного неясно, что вы хотите – Marusyk
[This] (http://stackoverflow.com/questions/448023/what-is-the-difference-between-left-right-outer-and-inner-joins) объясняет разницу между внутренним, внешним, левым, правым, полным наружным ... – SebHallin
Спасибо, но я смотрел на эту самую диаграмму venn часами и до сих пор не могу понять, как получить результат, как выше. – user3406725