2012-05-27 18 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個字段。我可以做到這一點,但我不能相信這是繼續下去的最佳方式。因此建議是最受歡迎的。謝謝。裏克

回答

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