我在mysql中有两个表:
tbl_products
和tbl_users = userID, userEmail, userPassword
tbl_products = creatorID, serialNumber, artNumber, regDate
tbl_users
我需要选择两行:一行来自tbl_products
,另一行来自SELECT *
FROM tbl_users,
tbl_products
WHERE userid = 8
AND serialnumber = 23432535
,其中序列号= ???和userID = ???。
当我使用
时SELECT *
FROM tbl_users,
tbl_products
WHERE ( userid = 8
AND serialnumber = 23432535 )
OR userid = 8
我得到0结果(因为serialNumber中的数字是假的)。
但是当我使用
时SELECT *
FROM tbl_users
WHERE userID=8
UNION
SELECT creatorID,serialNumber,artNumber
FROM tbl_products
WHERE serialNumber=23432535
结果我得到了不止一行。我不知道为什么,因为serialNumber是假的,只有一个用户有id = 8。
有人可以解释为什么我在结果集中有多行?感谢
@edit
UNION
shoulda-matchers
解决了我的问题。感谢
答案 0 :(得分:1)
多数民众赞成因为你缺少表格之间关系的条款,我想你的例子就是
and creatorID = userID
答案 1 :(得分:1)
true