1

私は SQL の経験はありませんが、必要なものを取得するためにカスタム SQL を作成する必要がある作業用のレポートを作成する任務を負っています。詳しい情報がなくても助けてくれる人がいるかどうかはわかりませんが、私たちが送信した顧客調査の結果を示すレポートを作成しています。私は手探りして、最終的に次のようになりました:

SELECT SUR_response.WOPK, SUR_response.completed_YN,
    SUR_response.ip_address, SUR_response.response_end_date,
    SUR_response.response_start_date, SUR_Item.ITEM_TEXT,
    SUR_item_answer.Answer_text, SUR_response_answer.answer_text 
FROM SUR_Item, SUR_response, SUR_Response_Answer, sur_item_answer
JOIN:
WHERE:SUR_Response_Answer.ITEM_ID=100

やろうとしましたが、テーブルSELECT *のすべての列は必要ありません。FROM

結果は返されましたが、最大 8 エントリの 1 ページしかないはずなのに 117 ページのエントリが返されるなど、多くの問題がありました。それを何度も繰り返しているようです。次に、行が一致しないか、本来のように相関しません。

繰り返しますが、これをすべてゼロから行ったばかりで、テーブルと列の違いを知っている以外に、実際に何をしているのかわかりません。したがって、より良い方向への助けやポイントは大歓迎です。

4

2 に答える 2

0

おそらく、必要な結合が欠落しています。結合は、あるテーブルのフィールドが別のテーブルの別のフィールドをどのように参照するかを示します。データ構造の詳細を知らなければ、どの結合が欠落しているかを知ることはできません。

このリンクは結合について説明しています: http ://www.w3schools.com/sql/sql_join.asp

于 2012-07-11T16:19:04.903 に答える
0

さて、先に進むことはあまりありませんが、青写真は次のとおりです。

SELECT SUR_response.WOPK, SUR_response.completed_YN,
       SUR_response.ip_address, SUR_response.response_end_date,
       SUR_response.response_start_date, SUR_Item.ITEM_TEXT,
       SUR_item_answer.Answer_text, SUR_response_answer.answer_text 
FROM SUR_Item
JOIN SUR_response ON Sur_Item.Item_ID=SUR_response.Item_ID
JOIN SUR_Response_Answer ON Sur_Item.Item_ID=SUR_Answer.Item_ID
JOIN sur_item_answer ON Sur_Item.Item_ID=SUR_Answer.Item_ID
WHERE SUR_Response_Answer.ITEM_ID=100

それでも余分な行が得られる場合は、接続されているテーブルとキーに一致するようにJOINand/orONステートメントを調整する必要があります。テーブルがどのように相互に関連しているかを伝えるのに十分な情報がありません。

于 2012-07-11T17:43:33.193 に答える