16

私はこのクエリを使用しています:

SELECT a.sales_id, d.bus_title, a.cat_id
FROM tbl_sales a
INNER JOIN tb_category b ON a.cat_id = b.cat_id
INNER JOIN tbl_business d ON d.bus_id = a.bus_id

この結果が生成されます。

sales_id  | bus_title      |cat_id
----------|----------------|------------
 1        | Business 1     | 6  
 2        | Business 12    | 12
 3        | Business 123   | 25

フィールド cat_id を、フィールド, ,tb_sales_categoryを含むという名前の新しいテーブルに変更しました。このテーブルも結合して新しいクエリを作成し、上記と同じ結果を得るにはどうすればよいですか?sales_category_idsales_idcat_id

私はデータベースに慣れていないので、助けが必要です。前もって感謝します

4

2 に答える 2

17

これを試して:

SELECT a.sales_id, d.bus_title, s.cat_id
FROM tbl_sales a
INNER JOIN tb_sales_category s ON a.sales_id = s.sales_id
INNER JOIN tbl_business      d ON a.bus_id   = d.bus_id
INNER JOIN tb_category       b ON s.cat_id   = b.cat_id

アイデアはかなり単純です。新しいテーブルの最初のフィールドはtb_sales_category代理キーsales_category_idとして機能し、他の 2 つのテーブル間の関係とは関係ありません。次に、関係の他の 2 つの側面にマッピングする必要がある, ,である他の 2 つのフィールドに行きます。sales_idcat_id

Join tb_category b ON a.cat_id = b.cat_idがなくなったため、新しいスキーマを使用することはできませんa.cat_id。ここに、新しいテーブルtb_sales_categoryロールが付属INNER JOIN tb_category b ON s.cat_id = b.cat_idしてINNER JOIN tb_sales_category s ON a.sales_id = s.sales_idいます。

これが理にかなっていることを願っています。

于 2012-04-21T08:50:43.500 に答える
4

私は内部結合の大ファンではないので、これを試してください:

SELECT a.sales_id, a.cat_id, c.bus_title
FROM tb_sales_category a, tb_sales b, tbl_business c
WHERE a.sales_id = b.sales_id
AND b.bus_id = c.bus_id
于 2012-04-21T08:55:27.477 に答える