FAQ |
Kalender |
![]() |
#1 | |||
|
||||
Medlem
|
Hej alla!
Tre tabeller: users (Användare) products (Prylar) orders (Beställningar) Jag vill kunna dölja en produkt för en viss användare om denne köpt den tidigare. Tex: SELECT * FROM products LEFT JOIN users ON users.user_id = orders.order_user LEFT JOIN orders ON orders.order_prod=products.prod_id WHERE users.user_id ='' AND orders.order_id ='' LIMIT 10 //Så skriver den bara ut produkter användaren inte köpt MEN mitt exempel hämtar ut alla orders och joinar produkterna och användarna på den. Någon som kan hjälpa? Tack på förhand! |
|||
![]() |
![]() |
![]() |
#2 | ||
|
|||
Klarade millennium-buggen
|
Prova det här :
Kod:
SELECT * FROM Products WHERE prod_id NOT IN (SELECT prod_id FROM orders WHERE user_id = '101010' ) Senast redigerad av Conny Westh den 2010-07-01 klockan 00:51 |
||
![]() |
![]() |
![]() |
#3 | |||
|
||||
Medlem
|
Nej det har jag inte provat. Ska ge det ett försök! Tack!
|
|||
![]() |
![]() |
![]() |
#4 | |||
|
||||
Medlem
|
Funkade perfekt. Tack!
![]() |
|||
![]() |
![]() |
![]() |
#5 | ||
|
|||
Medlem
|
Tänkte tipsa om att istället för att använda en subquery, att du använder LEFT OUTER JOIN för att optimera. I ditt fall kommer detta bli någonting i stil med:
Kod:
SELECT DISTINCT `products`.`product_id` , `products`.`product_name` FROM `products` LEFT OUTER JOIN `orders` ON `orders`.`product_id` = `products`.`product_id` AND `orders`.`user_id` = 1 WHERE `orders`.`user_id` IS NULL Finns lite förklaring på http://searchoracle.techtarget.com/a...XISTS-subquery |
||
![]() |
![]() |
Svara |
|
|