2

私は再テストで研究を行っています。私は3つのテーブルを持っています。1 つのテーブルは Demographics 用であり、限られた量のデータのみが必要です。他の 2 つのテーブルにはそれぞれ 235 のフィールドがあり、唯一の違いはテーブル名です。私は次のようなステートメントを試しました:

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 のフィールドすべてに名前を付ける必要があります。それはできますが、それが最善の方法だとは思えません。したがって、提案は大歓迎です。ありがとうございました。リック

4

3 に答える 3

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

これらのテーブルは名前だけが異なるので、UNION JOINを使用する方が良いのではないでしょうか?

その結果、すべてのテーブルレコードが再結合されます。

通常の結合では、結果はレコードごとに235 * 3列になり、3つのテーブル間の交差を表すレコードのサブセットになります。

于 2012-05-27T03:05:05.863 に答える
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
于 2012-05-27T04:02:17.297 に答える
0

次のようにして、複数のテーブルから * を選択し、3 番目のテーブルの特定の列のみを含めることができます。

SELECT
    research_statement_answers.*,
    statement_answers.*,
    demographic_answers.id,
    demographic_answers.title,
    demographic_answers.etc
FROM ...
于 2012-05-27T03:12:44.927 に答える