2012-05-27 3 views
2

Я занимаюсь исследованиями с помощью теста-повторного тестирования. У меня три таблицы. Одна таблица предназначена для демографии, и мне нужен только ограниченный объем данных. Остальные две таблицы имеют 235 полей, единственное отличие которых - имя таблицы. Я пробовал заявления вроде:Объединение 3 таблиц с 2 в SELECT *

SELECT * FROM research_statement_answers, statement_answers, demographic_answers 
WHERE ((research_statement_answers.id_Questions = demographic_answers.id_Demographic) 
and (statement_answers.id_Questions = demographic_answers.id_Demographic) 
and (demographic_answers.Research_Completed = 1)) 

Но это не работает. Все примеры, которые я видел, потребуют от меня указать все 235 полей в обеих таблицах. Я могу это сделать, но я не могу поверить, что это лучший способ. Поэтому предложения приветствуются. Спасибо. Rick

ответ

1
SELECT 
    research_statement_answers.*, 
    statement_answers.*, 
    demographic_answers.* 
FROM ... 

Поскольку эти таблицы отличаются только по имени, не лучше ли использовать СОЕДИНЕНИЕ на них?

В результате у вас будет воссоединение всех табличных записей.

При нормальном объединении результат составляет 235 * 3 столбца на запись подмножество записей, представляющих пересечение между тремя таблицами.

+0

Нет, UNION JOIN используется для объединения двух таблиц с одинаковыми именами полей с уникальные строки данных. В моем случае данные предназначены для одних и тех же строк данных с различными данными - тестовыми и повторными данными. –

0

Вы можете выбрать * из нескольких таблиц и включают только конкретные colums из третьей таблицы, выполнив следующие действия:

SELECT 
    research_statement_answers.*, 
    statement_answers.*, 
    demographic_answers.id, 
    demographic_answers.title, 
    demographic_answers.etc 
FROM ... 
0
SELECT 
    research_statement_answers.*, 
    statement_answers.*, 
    demographic_answers.* 
FROM research_statement_answers 
    JOIN demographic_answers ON demographic_answers.id_Demographic = research_statement_answers.id_Questions 
    JOIN statement_answers ON demographic_answers.id_Demographic = statement_answers.id_Questions 
    WHERE demographic_answers.Research_Completed = 1 
Смежные вопросы