我想比较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";
}
有人可以给我一些建议如何解决这个问题吗? 提前谢谢。
答案 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';
这将选择值IsMatching
或yes
的新列no
,以指示是否在另一个表中找到了葡萄酒id
。