帮助php mysql查询添加第3个表

时间:2011-04-01 23:07:19

标签: php

我需要帮助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个以上,但我现在可以生活的那个)

2 个答案:

答案 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