是否可以在不使用where子句的情况下从2个表中进行选择?

时间:2015-03-18 01:21:06

标签: php mysql sql

这是我的问题,我有2个表:产品和出价

在产品表中,我有产品名称,ID,价格(buyitnow)和拍卖类型。

现在,在我的出价中,我有bid_id,bid_item,bid_amount。我试图将新上市的产品展示为拍卖或现在购买。我试图显示出价和现在买入的价格。

这是我正在使用的SQL代码:

SELECT * 
FROM   products, 
       bids 
WHERE  enddate > Now() 
       AND products.id = bids.bids_item 
ORDER  BY date DESC 
LIMIT  16 

现在该声明的问题是它只显示出价表中有一行的拍卖列表,而且并不总是一个项目有该行,因为没有出价或者它现在买它。我正在使用一个简单的foreach语句。

我正在尝试使用变量:

$product->bids_amount; //auction
$product->price; //bin

如何解决此问题,请点击此处:

enter image description here enter image description here

1 个答案:

答案 0 :(得分:1)

当然。您希望使用on子句。实际上,您不应该在from子句中使用逗号。 。 。一个简单的规则:

SELECT * 
FROM   products JOIN
       bids 
       ON products.id = bids.bids_item AND enddate > Now()  
ORDER  BY date DESC 
LIMIT  16 

然后,如果您想保留所有产品,请使用LEFT JOIN。这会将所有记录保存在第一个表中:

SELECT * 
FROM   products LEFT JOIN
       bids 
       ON products.id = bids.bids_item AND enddate > Now()  
ORDER  BY date DESC 
LIMIT  16