Mysql选择其中t4.name=x和t2或t3有一个t1.user!?:)
为了解释我的问题,让我们想象4张表Mysql选择其中t4.name=x和t2或t3有一个t1.user!?:),mysql,select,Mysql,Select,为了解释我的问题,让我们想象4张表 users - (userid, user.data) buy - (buyid, productid, userid, buy.conditions) sell - (sellid, productid, userid, sell.conditions) 产品-(productid,product.data) 我想做一个选择,当有一个用户要购买或销售名称上有X的产品时,返回所有用户和产品数据 SELECT userid, USER.DA
users - (userid, user.data)
buy - (buyid, productid, userid, buy.conditions)
sell - (sellid, productid, userid, sell.conditions)
产品-(productid,product.data)
我想做一个选择,当有一个用户要购买或销售名称上有X的产品时,返回所有用户和产品数据
SELECT userid,
USER.DATA,
productid,
product.DATA
FROM users,
buy,
sell,
products
WHERE ( buy.userid = users.userid
OR sell.userid = users.userid )
AND ( buy.productid = product.productid
OR buy.productid = product.productid )
AND product.DATA LIKE '%x%'
这是行不通的,但我相信你知道我在努力做什么。试试下面这样的工会:
SELECT userid,
USER.DATA,
productid,
product.DATA
FROM users,
buy,
products
WHERE (buy.userid = users.userid)
AND (buy.productid = product.productid)
AND product.DATA LIKE '%x%'
UNION
SELECT userid,
USER.DATA,
productid,
product.DATA
FROM users,
sell,
products
WHERE (sell.userid = users.userid )
AND (sell.productid = product.productid )
AND product.DATA LIKE '%x%'
您可以使用EXISTS子句:
SELECT userid,
USER.DATA,
productid,
product.DATA
FROM users,
products
WHERE ( EXISTS (SELECT *
FROM buy
INNER JOIN product
ON ( buy.productid = product.productid )
WHERE buy.userid = users.userid
AND product.DATA LIKE '%x%') )
OR ( EXISTS (SELECT *
FROM sell
INNER JOIN product
ON ( sell.productid = product.productid )
WHERE sell.userid = users.userid
AND product.DATA LIKE '%x%')
AND products.userid = users.userid)
谢谢大家
在朋友的帮助下,最终做出了如下的事情:
SELECT USER.DATA,
product.DATA, origem
From
(
SELECT 'b' Origem,
productid,
userid
FROM buy
union all
SELECT 's' Origem,
productid,
userid
FROM sell
) tabelas
inner join users on users.userid=tabelas.userid
inner join products on products.productid=tabelas.productid
Where product.DATA LIKE '%x%'