Php 比较2个表之间的mysql id并显示所有匹配id echo yes
我想比较2个表之间的mysql id,并显示所有名称和匹配id echo yes 我有两张桌子,一张是葡萄酒,另一张是使用者。我将使用table wine中的唯一id列。但在TableUser中,我将使用wine_id列,该列不是唯一的 这是mysql代码,它将从TableWine和user获得匹配的idPhp 比较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
$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
是否在其他表格中找到
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';