2011-01-18 4 views
0

私の問題を説明すると、4つのテーブルが想像できる。Mysqlはt4.name = xを選択し、t2またはt3はt1.user!を持ちますか? :)

users - (userid, user.data) 

buy - (buyid, productid, userid, buy.conditions) 

sell - (sellid, productid, userid, sell.conditions) 

製品 - (商品コード、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%' 

これはうまくいきませんが、私は何をしようとしているのか考えています。

+0

おかげでたくさんの男 –

答えて

0

は、以下のような労働組合をお試しください:

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

あなたは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) 
0

おかげでたくさんの男を!友人からの助けを借りて

このような何かを作る終わる:


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%' 
関連する問題