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

Php 比较2个表之间的mysql id并显示所有匹配id echo yes,php,mysql,Php,Mysql,我想比较2个表之间的mysql id,并显示所有名称和匹配id echo yes 我有两张桌子,一张是葡萄酒,另一张是使用者。我将使用table wine中的唯一id列。但在TableUser中,我将使用wine_id列,该列不是唯一的 这是mysql代码,它将从TableWine和user获得匹配的id $sql="SELECT id FROM `winelist` w WHERE page = 'Chardonnay USA' and EXISTS( SELECT wine_id FROM

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

我有两张桌子,一张是葡萄酒,另一张是使用者。我将使用table wine中的唯一id列。但在TableUser中,我将使用wine_id列,该列不是唯一的

这是mysql代码,它将从TableWine和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)) {
}
我尝试在清单name while循环中使用此代码,但没有成功

if($data2['id'] == $data['id']) {
echo "yes";
}
else
{ 
echo "fail";
}
谁能给我一些建议如何解决这个问题?
提前感谢您。

使用加入:

$id=此处为输入


您可以改为使用
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';
这将选择一个新列
IsMatching
,该列的值为
yes
no
,以指示葡萄酒
id
是否在其他表格中找到


我尝试了echo id,但没有结果。但从我的理解来看,这将是我唯一的匹配,对吗?我想这就是我想要的。但当我在while循环中回音时,什么也没有出来。我尝试了echo$data['id'];我做错了什么?@Jack-正如您在sql fiddle演示中看到的,查询应该可以正常工作,这可能是php代码中的问题,请尝试更新您的问题,并用新查询显示完整的代码。还要注意的是,您需要一个新的列
IsMatching
m您还必须回显它。首先尝试直接在MySQL workbench或PHPMyAdmin中运行查询,并确保其正常工作。它起作用了。我想我只是不知道如何查询它,我把你的代码放在$sql中,然后$result=mysql\u query($sql);当($data=mysql_fetch_array($result)){echo$data['id'];}正在工作时。非常感谢。我想我的服务器有问题。我在代码末尾添加了where子句,因此它只显示在美国霞多丽页面。再次感谢。
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';