我需要帮助w / php查询,并将首先解释显而易见的是我对此有所了解。
该查询有效(几乎*),从2个表中随机选择具有特定条件的产品。我的问题是我不仅需要字段products.vendorid,而是实际的供应商名称,它位于另一个表table:vendor中。所以products.vid是产品的供应商 - 我需要进入供应商表并查找匹配的vendor.company字段。
我不知道如何在这里引入第3个表,主要是查找。我试图保持在相同的记录集中,并想知道子查询是否在这里使用或其他什么? 查询:
SELECT products.pid, products.vendorid, products.is_visible,
product_description.compare1, product_description.title
FROM products, product_description
WHERE products.pid >= (SELECT FLOOR( MAX(pid) * RAND()) FROM `products` )
and ((product_description.compare1 = 'Cohasset' )
and (products.is_visible='Yes') and (products.pid = product_description.pid))
LIMIT 5
澄清 - 我需要一个名为'vendor.company'的字段,在'vendor'表中,其中包含供应商ID,名为'vid',与products.vendorid匹配。
希望这是有道理的,我感谢你的帮助。
*(不是100%:如果生成的随机数比总产品少5个以上,但我现在可以生活的那个)
答案 0 :(得分:1)
SELECT products.pid, products.vendorid, products.is_visible,
product_description.compare1, product_description.title,
vendor.company
FROM products, product_description, vendor
WHERE products.pid >= (SELECT FLOOR( MAX(pid) * RAND()) FROM `products` )
and ((product_description.compare1 = 'Cohasset' )
and (products.is_visible='Yes') and (products.pid = product_description.pid))
and vendor.vid = products.vendorid
LIMIT 5
要解决这个问题:
我需要一个名为'vendor.company'的字段,
因此,我们将vendor.company
添加到顶部的SELECT
部分的末尾。
表'供应商',
因此我们将vendor
添加到FROM
列表
包含供应商ID,名为'vid',与products.vendorid匹配。
因此我们将vendor.vid = products.vendorid
添加到WHERE
答案 1 :(得分:0)
我会尽可能使用JOIN
代替WHERE
:
SELECT products.pid
, products.vendorid
, products.is_visible
, product_description.compare1
, product_description.title
, vendor.company
FROM products
JOIN product_description
ON products.pid = product_description.pid
JOIN vendor
ON vendor.vid = products.vendorid
WHERE products.pid >=
( SELECT FLOOR( MAX(pid) * RAND())
FROM products )
and (product_description.compare1 = 'Cohasset')
and (products.is_visible = 'Yes')
LIMIT 5