Mysql выберите, где t4.name = x и t2 или t3 имеют пользователя t1.user!? :)

0

Чтобы объяснить мою проблему, представьте себе 4 таблицы.

users - (userid, user.data)

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

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

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

Это не работает, но я верю, что вы поняли, что я пытаюсь сделать.

  • 0
    спасибо большое ребята
Теги:
select

3 ответа

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню