Kom ihåg mig?
Home Menu

Menu


Hjälp med mySQL

Ämnesverktyg Visningsalternativ
Oläst 2010-06-30, 16:34 #1
Landos avatar
Lando Lando är inte uppkopplad
Medlem
 
Reg.datum: Nov 2008
Inlägg: 242
Lando Lando är inte uppkopplad
Medlem
Landos avatar
 
Reg.datum: Nov 2008
Inlägg: 242
Question Hjälp med mySQL

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!
Lando är inte uppkopplad   Svara med citatSvara med citat
Oläst 2010-07-01, 00:24 #2
Conny Westh Conny Westh är inte uppkopplad
Klarade millennium-buggen
 
Reg.datum: Aug 2005
Inlägg: 5 166
Conny Westh Conny Westh är inte uppkopplad
Klarade millennium-buggen
 
Reg.datum: Aug 2005
Inlägg: 5 166
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
Conny Westh är inte uppkopplad   Svara med citatSvara med citat
Oläst 2010-07-01, 00:47 #3
Landos avatar
Lando Lando är inte uppkopplad
Medlem
 
Reg.datum: Nov 2008
Inlägg: 242
Lando Lando är inte uppkopplad
Medlem
Landos avatar
 
Reg.datum: Nov 2008
Inlägg: 242
Nej det har jag inte provat. Ska ge det ett försök! Tack!
Lando är inte uppkopplad   Svara med citatSvara med citat
Oläst 2010-07-01, 14:04 #4
Landos avatar
Lando Lando är inte uppkopplad
Medlem
 
Reg.datum: Nov 2008
Inlägg: 242
Lando Lando är inte uppkopplad
Medlem
Landos avatar
 
Reg.datum: Nov 2008
Inlägg: 242
Funkade perfekt. Tack!
Lando är inte uppkopplad   Svara med citatSvara med citat
Oläst 2010-07-06, 14:33 #5
terbon terbon är inte uppkopplad
Medlem
 
Reg.datum: Jul 2008
Inlägg: 69
terbon terbon är inte uppkopplad
Medlem
 
Reg.datum: Jul 2008
Inlägg: 69
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
Detta är effektivare då du slipper ha en subquery som körs för varje selectad rad.

Finns lite förklaring på http://searchoracle.techtarget.com/a...XISTS-subquery
terbon är inte uppkopplad   Svara med citatSvara med citat
Svara


Aktiva användare som för närvarande tittar på det här ämnet: 1 (0 medlemmar och 1 gäster)
 

Regler för att posta
Du får inte posta nya ämnen
Du får inte posta svar
Du får inte posta bifogade filer
Du får inte redigera dina inlägg

BB-kod är
Smilies är
[IMG]-kod är
HTML-kod är av

Forumhopp


Alla tider är GMT +2. Klockan är nu 03:20.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson
 
Copyright © 2017