Správné spojení   otázka

SQL

Ahoj chtěl bych poprosit všechny chytré hlavy na tomto foru.

Řeším zajímavý problém (mám 3 tabulky).

Objednávky

Zbozi

Darky

(není to presne struktura ale pro zjednoduseni jsem to udelal takto)

Jde mi o to ,že kazde zbozi ma id, jmeno, cenu, a nektere i darek.

Vypisuji to do faktur a potreboval bych aby darky byly bez ceny a pod svým zbožím kam patří.

Ale nevim jak poradne napsat select aby se mi to zobrazovalo spravne.

Spravne by se melo zobrazovat:

jmeno     cena   kod
-------   ----   ---
dudlik    10     qqq
darek 1          
darek 2          
darek 3          
kobliha   20     www
kolo      30     eee
auto      40     rrr
darek4

[objednavky]
id_objednavky     kod_objednavky
-------------     --------------
1                  qwertz
5                  wertzu
8                  ertzui
10                 rtzuui

[zbozi]
id_objednavky     id_produktu   kod   jmeno_produktu   cena
-------------     -----------   ---   --------------   ----
1                  20           qqq     dudlik          10
5                  30           www     kobliha         20
8                  40           eee     kolo            30
10                 50           rrr     auto            40

[darky]
id_produktu       jmeno_darku
-----------       -----------
20                 darek 1
20                 darek 2
20                 darek 3
50                 darek 4

Ar to zkousim jak to zkousim skoro vzdy mi z toho vyjde spatne toto.

jmeno     cena   kod
-------   ----   ---
dudlik    10     qqq
darek 1   10     qqq  
darek 2   10     qqq  
darek 3   10     qqq  
kobliha   20     www
kolo      30     eee
auto      40     rrr
darek4    40     rrr

a to mi udela mazec v součtu ceny a kodu :(

Pomuzete mi nakopnout prosim?

nahlásit spamnahlásit spam 0 / 2 odpovědětodpovědět

Pouzijte 2 dotazy

1] SELECT na vyber produktu z objenavky

2] SELECT na vyber darku za produkt z obejdnavky

nahlásit spamnahlásit spam -1 / 1 odpovědětodpovědět

Ahoj, bohuzel muzu pouzit jen jeden select a nebo vice ale musi byt vnoreny do sebe.

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

Mělo by to jít přes CASE WHEN.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Dobrý den,

vámi požadovaný výstup řeší tento select:

select ppp.jmeno_produktu, ppp.cena ,ppp.kod 
from (
	SELECT id_objednavky,id_produktu,jmeno_produktu,cena,kod, 1 typ
	FROM dbo.zbozi

	union

	SELECT z.id_objednavky,z.id_produktu,d.jmeno_darku ,'','', 2
	FROM dbo.zbozi z right join dbo.darky d on d.id_produktu = z.id_produktu 
	) ppp
	
order by ppp.id_objednavky,ppp.id_produktu, ppp.typ 

Přesto bych možná zvážil, zda by nebylo lepší stávající návrh tabulek databáze trochu přepracovat.

nahlásit spamnahlásit spam 0 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:
Heslo:

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback