2014-04-25 59 views
1

期待这个很简单,我错过了一些明显的东西。根据1个变量从2个表中选择值。

我有2个表。

汽车:

CarID, dealerID, info1, info2, info3 

咨询:

enqID, carID, dealerID, info1, info2, info3 

和1个变量与过滤:

$_SESSION['dealerID'] 

的垂询报价为汽车人已经提交了,所以他们的电子邮件和价格等。

我需要在一个查询中获取汽车的详细信息和查询/优惠的详细信息。 因此,选择汽车wheredealerID =会话,然后相同,但基于他们的结果。

我曾尝试:

$query = $db->query 
     ("SELECT * 
      FROM cars, enquiries 
      WHERE cars.dealerID  = ".$_SESSION['dealerID']." 
      AND enquiries.dealerID = ".$_SESSION['dealerID'].""); 

但这只是返回所有的汽车匹配dealerID作为会话。

我需要做1个查询和通过数组的if循环吗?因此,查询从经销商获取所有车辆,然后循环查看每个$行['dealerID'],直到找到与dealerID匹配的查询为止?

+0

旁注:使用'_“。$ _ SESSION ['dealerID']。”''为两者。你需要额外的单引号。 –

+0

什么是唯一性约束和主键? –

回答

2

我不知道我理解你很好,但尝试这个

SELECT * 
FROM cars INNER JOIN enquiries 
ON cars.CarID=enquiries.carID 
WHERE cars.dealerID  = '".$_SESSION['dealerID']."'"; 
+0

我有一种感觉OP会需要某种类型的JOIN,但是我对自己有一段可怕的时间。我无法将头围绕在那些大声笑 –

+0

@ Fred-ii-感谢+1,这只是练习,而且它们非常重要且有用:) – CodeBird

+1

不客气。我确定他们是,但我试图理解JOIN,并且对于我的生活,我无法理解它们。我想我只需要更加努力,练习得更慢。 –

0

您需要将表连接到适当的连接键上。我相信CarId在这种情况下,右键:

SELECT * 
FROM cars c join 
    enquiries e 
    ON e.CarId = c.CarId 
WHERE c.dealerID  = ".$_SESSION['dealerID']." AND 
     e.dealerID = ".$_SESSION['dealerID'] 
+0

或者是(CarID,dealerID)的关键... –

+0

@ChrisWesseling。 。 。我不确定,但接受的答案基本上与此相同。 –

0

你需要加入的表,如果你想采取从数据两个表的条​​件都在这两个表上: -

SELECT * 
FROM cars left join 
    enquiries ON enquiries.CarId = cars.CarId 
WHERE cars.dealerID  = ".$_SESSION['dealerID']." 
    AND 
    enquiries.dealerID = ".$_SESSION['dealerID'] 
1

首先,照顾SQL注入,你的代码是不安全的。不想使用预处理语句(http://www.php.net/pdo.prepared-statements

为您查询,您需要定义insteed使用明星的列作为

SELECT cars.*, enquiries.* 
      FROM cars, enquiries 
      WHERE (cars.dealerID  = ? AND enquiries.dealerID = ?); 

或更精确的不重复carId

SELECT cars.carID, cars.dealerID, cars.info1, cars.info2, cars.info3, enquiries.enqID, enquiries.dealerID, enquiries.info1, enquiries.info2, enquiries.info3 
      FROM cars, enquiries 
      WHERE (cars.dealerID  = ? and enquiries.dealerID = ?); 
+0

:)问题[标签:php]&[标签:mysql]的相关**列的算法收敛于[此注入问题](http://stackoverflow.com/q/60174/383793)。 –

+0

它仍然选择匹配的dealerID所有的汽车,很确定我需要使用JOINs,我只是觉得它们令人困惑。 – Vereonix

相关问题