Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql选择其中t4.name=x和t2或t3有一个t1.user!?:)_Mysql_Select - Fatal编程技术网

Mysql选择其中t4.name=x和t2或t3有一个t1.user!?:)

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

为了解释我的问题,让我们想象4张表

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