Podmínka v Select + subselect – MySQL – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu
Reklama
Reklama

Podmínka v Select + subselect – MySQL – Fórum – Programujte.comPodmínka v Select + subselect – MySQL – Fórum – Programujte.com

 

Hledá se programátor! Plat 1 800 € + bonusy (firma Boxmol.com)
Sp0uny0
Duch
7. 4. 2016   #1
-
0
-

Zdravím, mám problém se subselectem v podmínce.

Databáze:
tabulka "produkty" s alias - "produkty"
tabulka "podprodukty" s alias - "podprodukty"

Příkaz:
Select produkty.ID, (select MIN(subprodukty.`quantity`) FROM `podprodukty` AS `subpodprodukty` JOIN `produkty` AS `subprodukty` ON subpodprodukty.`sub_ID`=subprodukty.`ID` AND subpodprodukty.`item_ID`=produkty.ID AND subpodprodukty.`type`=2)   , produkty.`quantity`) AS quantity FROM .....

Abych to jednoduše popsal, tabulka podprodukty je rozpad produktů které obsahují více částí (např. sady) a obsahuje pouze ID nikoli další údaje o produktu. Zjistit tedy skutečnou dostupnost skladem u sady je možné jedině z údajů o dostupnosti každé jednotlivé položky (1. produkt - 2x; 2. produkt - 3x, 3. produkt - 1x; dostupnost sady je tedy 1x). Z tohoto důvodu je právě ta podmínka a subselect. Podmínka nejprve určí jestli se jedná o sadu nebo ne, a pokud ano tak by měla zjistit její dostupnost. Problém nastává ale ve spárování podproduktů v subselect s produkty z hlavního select, protože se mi tam už nedotáhne alias :/ a nahlásí mi to neznámí sloupec...

Snad jsem to popsal alespoň trochu srozumitelně :/

Nahlásit jako SPAM
IP: 2a00:1028:838e:7c8e:9410:...–
Reklama
Reklama
P
~ Anonymní uživatel
193 příspěvků
7. 4. 2016   #2
-
0
-

   

SELECT
	  p.ID
	, CASE p.Type WHEN 2 THEN COALESCE(s.Quantity, 0) ELSE p.Quantity END AS Quantity
FROM
	Product p
	LEFT OUTER JOIN (
		SELECT Item_ID, MIN(Quantity) AS Quantity
		FROM Product
		GROUP BY Item_ID
	) s ON s.Item_ID = p.ID
		
Nahlásit jako SPAM
IP: 85.93.116.–
Sp0uny0
Duch
7. 4. 2016   #3
-
0
-

#2 P
trošku jsem to upravil a je to super... stále jsem se chtěl dát tou cestou Selectu a přitom to stačilo takhle jednoduše... díky :)

Nahlásit jako SPAM
IP: 2a00:1028:838e:7c8e:41a6:...–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 9 hostů

Podobná vlákna

Select*from — založil Salieri

Select — založil Zuben

SELECT — založil Row

Select — založil erenis

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032016 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý