I en anden tabel som hedder "shop_product_customer" har jeg
customer_id product_id product_price
"shop_product_customer" tabellen er beregnet til kunder som skal have en speciel pris (ved ik om det er den rigtite måde at gøre det på?)
Men mit spørgsmål er så hvordan trækker jeg produkter ud fra den første tabel og hvis der er forskellige priser for kunden skal den pris vises i stedet?
SELECT shop_products.product_name,ISNULL(shop_product_customer.product_price,shop_products.product_price) FROM shop_products LEFT JOIN shop_product_customer ON shop_products.product_id=shop_product_customer.product_id AND shop_product_customer.customer_id=X
#1064 - You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near ' shop_products . product_price ) FROM shop_products LEFT JOIN
SELECT p.product_item_id, p.product_name, COALESCE(pc.product_price, p.product_price, 0) FROM shop_products p LEFT JOIN shop_products_customer pc ON p.product_id = pc.product_id AND pc.customer_id = ????
der er noget jeg ikke helt forstår. Når jeg nu sætter and p.product_group_id på så viser den stadigvæk alle varer?
SQL ser sådan her ud:
SELECT p.product_name, IFNULL( pc.product_price, p.product_price ) FROM shop_products p LEFT JOIN shop_product_customer pc ON p.product_id = pc.product_id AND pc.customer_id =1 AND p.product_group_id =2 LIMIT 0 , 30
Jeg indrømmer, at COALESCE i dette tilfælde kun er minimalt anderledes end IFNULL. Men hvis du nu f.eks. havde 4 forskellige niveauer af priser (kampagner, hvoraf nogle måske er relateret til både vare og kunde) liggende i 4 tabeller, så er COALESCE meget handy. Kunsten er at arrangere felterne sådan, at den "bedste" mulighed placeres først og den "mest normale" sidst i feltrækken i COALESCE. Den første, som ikke er Null vælges.
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.