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

标签 php mysql

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

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

这是 mysql 代码,将从餐 table 酒和用户中获取匹配的 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)) {
}

我尝试在 listing name while 循环中使用此代码,但没有成功。

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

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

最佳答案

您可以改用 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,其值为 yesno 以指示 Wine id 是否为是否在其他表中找到。

关于php - 比较 2 个表之间的 mysql id 并显示所有匹配 id echo yes,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20824658/

相关文章:

php - 当我用随机值替换静态值时,Rand() 函数会导致错误

mysql - 如何根据多个最大日期列选择整行

PHP MySQL 无法插入到文本字段

java - Hibernate 查询和列表对象

php - WooCommerce 电子邮件样式 - 删除默认样式

php - 没有 Doctrine 的 Symfony2

php - OOP For循环SQL更新查询数量

javascript - [PHP][MySQL] 记录 60 秒后删除表

mysql - 如何在 SQL (ms Access) 中的同一行中添加多个字段?

mysql - 从不同的表创建组合