0

購入品を保管するテーブルと、商品を保管するテーブルがあります。

購入テーブルの各行には、最大 9 個の製品 ID を含めることができます (8 個は空にすることができます)。

id, foo, bar, baz, product_1_id, product_2_id, product_3_id, etc... 

ここで、html ページに表示するために、そのpurchasesテーブルのすべてのフィールドを照会する必要があります。

製品 ID だけを表示することはできないため、 productsテーブルで対応する product_name を見つける必要があります。

SQL クエリに苦労しています。

どんな助けでも本当に感謝しています。

4

6 に答える 6

2

製品名を取得するには、次のことを試してみます。

SELECT t2.product_name as product_name_1, t3.product_name as product_name_2, t4.product_name as product_name_1, [...]
FROM purchases as t1
JOIN products as t2 ON(t1.product_1_id = t2.product_id)
LEFT JOIN products as t3 ON(t1.product_2_id = t3.product_id)
LEFT JOIN products as t4 ON(t1.product_3_id = t4.product_id)
[...]
WHERE t1.id = ...

ただし、これはおそらく非常に遅くなります。データベースを再構築することをお勧めします。

于 2012-07-31T13:53:14.010 に答える
1

Productsテーブルに9回参加する必要があります。ただし、正規化を検討してください

select id, foo, bar, baz, p1.product_name, p2.product_name, p3.product_name, 
  etc...  
from purchases as pur
left join products as p1 on pur.product_1_id=p1.product_id
left join products as p2 on pur.product_2_id=p2.product_id
.
.
于 2012-07-31T13:53:26.673 に答える
0

あなたはこれを行うことができます

購入を選択します。、 製品。購入からid1=id、id2 =id...などで製品に参加します。

これを読む:

MySQL2つのフィールドでテーブルを結合する方法

于 2012-07-31T14:03:17.477 に答える
0

SQLでは、このように使用できます..

 select *,PM.Product_id,P.Product_name from purchase_mst PM, product P where   
 PM.Product_id1=P.Product_id1 and PM.Product_id2=P.Product_id2 etc....
于 2012-07-31T13:54:47.390 に答える
0

適切に正規化された設計では、product、purchase_Order、および purchase_order_line があり、クエリは単純に次のようになります。

SELECT     ...
FROM       purchase_order
INNER JOIN purchase_order_line
ON         purchase_order.id = purchase_order_line.purchase_order_id
INNER JOIN product
ON         purchase_order_line.product_id = product.id
于 2012-07-31T13:57:08.660 に答える
0

*product_id、purchase_id* の 2 つの列で購入製品を接続するテーブルがあれば、より簡単になると思います。

それでも、次のようなことを試すことができると思います:

SELECT pr1.name
 FROM purchases pur1, products pr1
WHERE pur1.product_1_id = pr1.id
UNION ALL
SELECT pr2.name
 FROM purchases pur2, products pr2
WHERE pur2.product_1_id = pr2.id
UNION ALL
-- and so on until
SELECT pr9.name
 FROM purchases pur9, products pr9
WHERE pur9.product_9_id = pr9.id

これはかなり恐ろしく見えますが、データベースの設計を再考することを強くお勧めします。

于 2012-07-31T14:02:22.567 に答える