2017-08-18 7 views
0
契約からユーザー とのContractIDから、私は姓、ファーストネームを必要とする、電子メール、生き

mysqlを使用してこれらの3つのテーブルから必要なデータを抽出するにはどうすればよいですか?

users:- id, firstname, lastname, email, live 
contracts:- id, userid, contractid 
userstage:- id, userid, stageid, statusid 

...

申し訳ありませんが、私はこれらの3つのテーブルから必要なデータを抽出するために、正しいSQLをうまくするのに苦労しています、userstage

WHERE users.live =1 AND contracts.contractid = 1 AND userstage.statusid <>4 (not equal to 4) 

から とstatusidありがとうございました。

答えて

1

それはかなり基本的なSQLです。あなたの問題が本当にわからない。必要なものに応じてOUTER JOIN(左または右)に変更することができます。

SELECT u.firstname, u.lastname, u.email, u.live, c.contractid, us.statusid 
FROM users AS u 
INNER JOIN contracts AS c ON u.id = c.userid 
INNER JOIN userstage AS us ON u.id = us.userid 
WHERE u.live = 1 AND c.contractid = 1 AND us.statusid <> 4 
+0

これは私が試したものですが、結果は合わないものです。私がstatusidを省略した場合、私はusersテーブルのユーザー数の約2倍の900の結果を得ます。 –

+0

contractsテーブルとuserstageテーブルの両方に、ユーザーIDごとに複数のエントリがあります。これは正しい結合を得るのに役立ちますか? OUTER JOINに変更すると、mysqlエラーが発生する –

+0

申し訳ありませんが、これらはうまくいきます。それは、私はユーザーIDごとに複数の行を持っていることが予想されていることであり、わかりませんでした。あなたがた両方に感謝します。 –

1

あなたは、ユーザーのいくつかは何の契約などを持っていないときに、あなたが開始することができます何をしたいかに応じて:

SELECT firstname, lastname, email, live, contractid, statusid 
FROM users 
JOIN contracts ON contracts.userid = users.id 
JOIN userstage ON userstage.userid = users.id 
WHERE users.live =1 AND contracts.contractid = 1 AND userstage.statusid <>4 (not equal to 4) 
+0

上記と同じですが、結果が正しくありません –

関連する問題