比较2表之间的mysql id并显示所有匹配id echo yes

时间:2013-12-29 11:26:28

标签: php mysql

我想比较2表之间的mysql id并显示匹配id echo yes的所有名称。

我有2个表一个是酒,另一个是用户。我将使用来自餐酒的独特id列。但在表用户中,我将使用不唯一的wine_id列。

这是mysql代码,它将从表wine和user获得匹配的id。

$sql="SELECT id FROM `winelist` w WHERE page = 'Chardonnay USA' and
EXISTS(
SELECT wine_id FROM `user_wine_history` u WHERE user_name = 'bon'
AND u.wine_id = w.id);";
$result= mysql_query($sql);

while($data= mysql_fetch_array($result))  {
}

这是用于列出wine中所有名称的代码。

$sql2 ="SELECT id, name, year, grape, price, instock FROM winelist WHERE page ='Chardonnay USA';";
$result2 = mysql_query($sql2);

while($data2 = mysql_fetch_array($result2)) {
}

我尝试在循环中列出名称时使用此代码,但它不起作用。

if($data2['id'] == $data['id']) {
echo "yes";
}
else
{ 
echo "fail";
}

有人可以给我一些建议如何解决这个问题吗? 提前谢谢。

2 个答案:

答案 0 :(得分:0)

使用加入

  

$ id =这里输入

SELECT id FROM `winelist` w  
INNER JOIN `user_wine_history` u 
ON u.wine_id = w.id
WHERE w.page = 'Chardonnay USA' AND u.user_name = 'bon'
AND w.id = '".$id."'

答案 1 :(得分:0)

您可以使用LEFT JOIN代替,并使用CASE表达式在查询中执行此操作,例如:

SELECT 
  w.id , w.page, w.name, w.year, 
  u.user_name, u.id user_id, u.wine_id uwine_id,
  CASE 
    WHEN u.id IS NOT NULL THEN 'Yes' 
    ELSE 'No' 
  END AS IsMatching
FROM `winelist` w 
LEFT JOIN `user_wine_history` u  ON w.id        = u.wine_id 
                                AND w.page      = 'Chardonnay USA' 
                                AND u.user_name = 'bon';

这将选择值IsMatchingyes的新列no,以指示是否在另一个表中找到了葡萄酒id