MySQL 4 таблицы полное соединение и отображать общий столбец только один раз - PullRequest
1 голос
/ 18 марта 2011

У меня есть 4 таблицы, к которым я хочу полностью присоединиться, но дело в том, что я хочу, чтобы UID показывался только один раз по всем направлениям, я пробовал использовать синтаксис using (uid), и безрезультатно, может кто-то направитьмне правильный синтаксис?

SELECT * FROM user_table, user_setting, user_score, scores
WHERE user_table.uid = 'x' AND max_score >= user_score AND min_score <= user_score
AND user_table.uid = user_setting.uid AND user_score.uid = user_table.uid;

Заранее спасибо!

1 Ответ

1 голос
/ 18 марта 2011

То, что вы описали, является внутренним объединением, а не полным объединением, но, кроме номенклатуры, вам необходимо указать конкретные столбцы, которые вы хотите получить в предложении SELECT.

Например,

SELECT user_table.uid, user_setting.col1, user_score.col2 FROM user_table, user_setting, user_score, scores
WHERE user_table.uid = 'x' AND max_score >= user_score AND min_score <= user_score
AND user_table.uid = user_setting.uid AND user_score.uid = user_table.uid;

Возможно, вы захотите перейти к более современным (как, например, после 1992 года!) join объединениям на основе ключевых слов (и с использованием псевдонимов таблиц), а не к устаревшему методу указания нескольких таблиц в

Например,

select
   /* column list */

from user_table ut

join user_setting ust on ust.uid = ut.uid
join user_score usr on usr.uid = ut.uid
join scores s on /* specify your join conditions here, as they aren't 
                    obvious above */

where ...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...