私は以下の表を持っている(彼らはすべてのより多くの列を得たが、私はちょうど興味のあるものを示しています):私は何をしたいか独占mysqlの選択クエリ、二つのテーブル
Product Order details Orders
---------------------------- ---------------------------- --------------
| id_product | id_supplier | | id_order | id_product | | id_order |
| 12 | 2 | | 1 | 56 | | 1 |
| 32 | 4 | | 2 | 32 | | 2 |
| 56 | 2 | | 2 | 56 | | 3 |
| 10 | 1 | | 4 | 56 | | 4 |
---------------------------- | 3 | 12 | --------------
----------------------------
は、すべての注文れを選択していますからまでの製品を1つ以上の納入業者にあります。だから、id 2(id_supplier = 2)のサプライヤからの製品しか持っていないすべての注文が必要だと言うことができます。
すべての注文がのみの場合はに商品がありますid 4(id_supplier = 4)のサプライヤから空の結果が得られるはずです。
私はONLYは、私は、次の質問を読んだ2
私はidの順序を取得する必要があります2 と 4 idのサプライヤーからの製品持っていることをすべての注文したい場合:mySQL exclusive recordsをしかし私ができます私が持っているような2つのテーブルを持っているときに、そのクエリーを把握することはできません。私はここで私を助けるためにもう一組の目が必要です! :)
どうすればいいですか?
EDIT:clearifyするために、私は1つ以上の指定のサプライヤーからの製品が含まれているすべての注文を取得したいです。指定されていない他のサプライヤーからの製品を使用した注文は含まれません。
明確化...サプライヤの条件= 4はid_product = 32(id_supplier 4)で注文ID 2を返すべきです(SHOULD)。次に、サプライヤ2と4を参照してください。これは2つの異なることを意味します。 ONE - サプライヤが2または4のいずれかの注文... TWO - 製品が最低でも2つのサプライヤによって表されなければならないすべての注文。したがって、1つの注文Xにサプライヤ2だけがあった場合、注文Yにはサプライヤ4だけがありますが、注文Zにはサプライヤ2とサプライヤ4の両方の製品があり、注文Zを見たいと思います。 – DRapp
はい、正確です。私はそれがANDでなければならないことを明確にすべきだった。サプライヤー2と4が指定されている場合、そのサプライヤーからの製品のみを注文に含める必要があります。 – Bazze
それで、リストに載っているものは1つだけです...サプライヤがどこにいても...どちらか一方、あるいは両方、あなたのクエリに適格であるとしてその注文を含めることができます...既存の答えはあなたのためにそれを処理する必要があります。 – DRapp