2013-10-24 139 views
0

我对php和MySql很新,需要一些帮助。加入和查询两个mysql表

我有两个表 1)含有三列的收藏 - 一个EMAILID,的itemId和警报

2)含有若干列的ITEMLIST - 的itemId,ITEMNAME,ITEMPRICE,itemUrl等

当用户使用特定的emailId登录,我需要显示愿望清单中的项目列表(来自itemList)以及他的愿望清单中的“alert”列。由于这两个表是不同的,并且emailId是唯一的输入,所以我需要找到一个最佳方法来查询它。

WishList 

---------------------------------- 
emailId  | itemId | alert 
---------------------------------- 
[email protected]  01  true 
[email protected]  02  false 
[email protected]  03  false 
[email protected]  03  false 
[email protected]  03  false 
[email protected]  04  false 

ItemList 
------------------------------------------------- 
itemId | itemName | itemPrice | itemUrl | .. 
------------------------------------------------- 
01  abc   129   
02  cde   99 
03  def   981 
04  efg   29 
05  fgh   200 

因此,给定emailId,我该如何最优化地查询与之对应的所有项目? 例如:如果是EMAILID [email protected], 然后所需的输出:

Output - [email protected] 
---------------------------------------------------------- 
alert | itemId | itemName | itemPrice | itemUrl | .. 
--------------------------------------------------------- 
true  01  abc   129   
false  03  def   981 
false  04  efg   29 

三江源

编辑有关的question..sorry。

回答

1

试试这个

SELECT * FROM ITEMLIST哪里i.itemId =

+0

感谢你的答案,但我如何得到从心愿单中的“警报”一栏为好。 – user2866631

+0

选择w.alert,你想从ItemList i,WishList w中获取所有列,其中i.itemId =(从WishList中选择itemID,其中emailid =“emailaddress”)和i.itemid = w.itemid –

0

尝试这个

select * from WishList join ItemList ON WishList.itemId = ItemList.itemId 
where emailId = "emailaddress" 
0

您可以使用左侧加入该类型的结果。

Select * 
FROM ItemList I 
Left join WatchList W On I.ItemId=W.ItemId 
where your_require_condition ; 
0

尝试这个

select b.* from WishList as a join ItemList as b on a.itemId = b.itemId 
where a.emailId = 'email address' 

它会给你想要的EMAILID整个项目列表。

0

ü可以试试下面的查询(从愿望清单中,其中EMAILID = “EMAILADDRESS” 选择的itemid)。

select * 
from wishlist w,itemlist i 
where w.itemid=i.itemid 
and i.emailid="emailaddress" 
1

您可以使用JOINRIGHT JOINLEFT JOIN方法。
试试这个:

SELECT WL.emailId, WL.itemId, IL.itemName, IL.itemPrice 
FROM WishList WL 
LEFT JOIN ItemList IL 
on WL.ItemId = IL.itemId 
//filter here, you can add WHERE CLAUSE 
+0

感谢您的回答,但是每编辑问题..我将不得不使用INNER JOIN而不是左连接,因为我需要来自这两个表的列。但是我能够拿到一场比赛,还有什么我需要照顾的吗?我使用php,并在我的查询后添加了以下代码 $ result = mysql_query(“Select * FROM WishList WL INNER JOIN ItemList IL on WL.ItemId = IL.itemId where WL。EMAILID = '$电子邮件'“); 而($结果= mysql_fetch_assoc($结果)){ $ JSON [] = $结果; \t \t回声json_encode($ JSON); } – user2866631

+0

是的,我想你只需要一个匹配就可以得到你需要的输出,但是如果你定义了另外一个匹配(更具体的说,但是没有问题),它会更准确。 –

+0

我的不好 - 我用mysql_fetch_assoc的相同变量 它工作正常! :) – user2866631

0

使用LeftJoin

Select I.* from ItemList I Left join WishList W 
    on I.itemId = W.itemId where W.emailId = "<email_address>"