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

我想比较2表之间的mysql id并显示所有名称与匹配id echo yes。</ p> \ n

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

这是一个mysql代码,它将从表wine和user获得匹配的id。</ p>

  $ sql =“SELECT id FROMwinelist w WHERE page ='Chardonnay USA'和
EXISTS(
SELECT wine_id FROMuser_wine_history u WHERE user_name ='bon'
AND u.wine_id = w。 id);“;
$ result = mysql_query($ sql);

while($ data = mysql_fetch_array($ result)){
}
</ code> </ pre>

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

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

而($ data2 = mysql_fetch_array($ result2)){
}
</ code> </ pre>

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

  if($ data2 ['id'] == $ data ['  id']){
echo“yes”;
}
else
{
echo“fail”;
}
</ code> </ pre>

任何人都可以给我一些 建议如何解决这个问题?
提前谢谢你。</ p>
</ div>

展开原文

原文

I want to compare mysql id between 2 table and display all name with match id echo yes.

I have 2 table one is wine and the other is user. I will use unique id column from table wine. But in table user, I will use wine_id column which are not unique.

This is mysql code that will get a matching id from table wine and user.

$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))  {
}

and this is the code for for listing all the name in 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)) {
}

I tried to use this code in listing name while loop but it didn't work.

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

Can anybody give me some advice how to solve this? Thank you in advance.

2个回答



您可以使用 LEFT JOIN </ code>,并使用 CASE </ code在查询中执行此操作 >表达式,如:</ p>

  SELECT 
w.id,w.page,w.name,w.year,
u.user_name,u.id user_id, u.wine_id uwine_id,
CASE
当你是非空时那么'是'
ELSE'否'
结束为IsMatching
FROMwinelist w
LEFT JOINuser_wine_historyu on w.id = u.wine_id
AND w.page ='Chardonnay USA'
AND u.user_name ='bon';
</ code> </ pre>

这将选择一个新列 IsMatching </ code>,其值为 yes </ code>或 no </ code>,表示是否在另一个表中找到了wine id </ code>。</ p >

展开原文

原文

You can use LEFT JOIN instead and do this within the query using the CASE expression, something like:

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';

This will select a new column IsMatching with values yes or no to indicate whether the wine id is found in the other table or not.

duannei0044
duannei0044 现在工作。 谢谢。 我认为我的服务器有问题。 我在代码末尾添加了一个where子句,因此它只显示在chardonnay usa页面中。 再次感谢你。
6 年多之前 回复
doue2666
doue2666 我把你的代码放在$ sql然后$ result = mysql_query($ sql); while($ data = mysql_fetch_array($ result)){echo $ data ['id'];}
6 年多之前 回复
dongruo4601
dongruo4601 我在PHPMyAdmin中尝试它。 有用。 我想我只是不知道如何查询它。
6 年多之前 回复
dpo60833
dpo60833 - 查询应该正常工作,你可以在sql小提琴演示中看到,它可能是你的PHP代码中的一个问题,尝试更新你的问题,并用新查询显示你的完整代码。 另请注意,您期望新的列IsMatchingm也必须回显它。 首先尝试直接在MySQL工作台或PHPMyAdmin中运行查询,并确保它正常工作。
6 年多之前 回复
douxie0824
douxie0824 我想这就是我要找的。 但是当我在while循环中回应时,没有任何结果出来。 我试过echo $ data ['id']; 我做错了什么?
6 年多之前 回复



使用加入</ strong>:</ p>


$ id =这里输入</ p>
</ blockquote>

  SELECT id FROMwinelist w 
INNER JOINuser_wine_history u
ON.wine_id = w.id
WHERE w .page ='Chardonnay USA'和u.user_name ='bon'
AND w.id ='“。$ id。”'
</ code> </ pre>
</ div>

展开原文

原文

Use Join:

$id= Here the input

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."'

dsg41888
dsg41888 我尝试echo id但没有出来。 但是根据我的理解,这只会回应我的合适吗?
6 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐