Kom ihåg mig?
Home Menu

Menu


Mysql join 2 ggr på samma tabell (wordpress)

 
Ämnesverktyg Visningsalternativ
Oläst 2011-11-20, 13:59 #1
swans avatar
swan swan är inte uppkopplad
Medlem
 
Reg.datum: Oct 2004
Inlägg: 216
swan swan är inte uppkopplad
Medlem
swans avatar
 
Reg.datum: Oct 2004
Inlägg: 216
Standard Mysql join 2 ggr på samma tabell (wordpress)

Jag har en vanlig wordpress-installation.

Varje sida i min blogg motsvarar en produkt. Produkten har två priser, beroende på vilken typ det är. Dessa lagrar jag som post meta till sidan. En sida kan alltså exempelvis ha "price_current1" = "12" och "price_current2" = "10". En del sidor har endast ett pris, då lagrar jag endast "price_current1". Dessutom har sida/produkt ett orginalpris, exempelvis "price_org1" = "30" och "price_org2" = "20".

Det jag vill göra är att jag vill ta fram en lista med alla sidor/produkter som har ett pris som är lägre än orginalpris, inklusive prisskillnaden.

Tidigare har jag först selekterat fram detta i två frågor, men det jag undrar är om det är möjligt att göra det i en enda fråga så att samma produkt inte kan dyka upp två gånger.

Mina två frågor (som är nästan likadana) ser i nuläget ut så här:

SELECT posts.*, ROUND(A.meta_value) AS price_current,
ROUND(B.meta_value) AS price_org, ROUND((A.meta_value / B.meta_value) * 100 - 100) AS price_diff FROM posts, postmeta A, postmeta B WHERE ID = A.post_id AND ID = B.post_id AND A.meta_key = 'price_current1' AND B.meta_key = 'price_org1' AND B.meta_value > A.meta_value AND post_status = 'publish' AND post_type = 'post' ORDER BY price_org DESC

SELECT posts.*, ROUND(A.meta_value) AS price_current,
ROUND(B.meta_value) AS price_org, ROUND((A.meta_value / B.meta_value) * 100 - 100) AS price_diff FROM posts, postmeta A, postmeta B WHERE ID = A.post_id AND ID = B.post_id AND A.meta_key = 'price_current2' AND B.meta_key = 'price_org2' AND B.meta_value > A.meta_value AND post_status = 'publish' AND post_type = 'post' ORDER BY price_org DESC

Problemet jag är är alltså att samma sida/produkt kan dyka upp i båda listorna. Min förhoppning är att det går att göra allt i en enda fråga och slippa få dubletter.

Går det att slå ihop dessa två frågor till en enda fråga? Hur?
swan är inte uppkopplad   Svara med citatSvara med citat
 


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 15:08.

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