Anonymní profil peter – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Anonymní profil peter – Programujte.comAnonymní profil peter – Programujte.com

 

Příspěvky odeslané z IP adresy 2001:718:2601:26c:140c:57...–

peter
MS SQL › Odstranění duplicitních řádk…
25. 1. 2017   #214649

   

SELECT
  a.ID_Rady,
  b.Rada,
  c.Produkt,
  d.Objem_T
FROM
  HDL_ProduktyDef a
    LEFT JOIN HDL_ProdRady AS b on b.ID=a.ID_Rady
    LEFT JOIN HDL_Produkty AS c on c.ID=a.ID_Prod
    LEFT JOIN HDL_Objemy AS d on d.ID=a.ID_Objemu -- a tady melo byt d.ID
WHERE
  a.ID_Rady=5 AND
  a.ID_Prod=5 AND
  a.ID_Objemu=6
peter
MS SQL › Odstranění duplicitních řádk…
25. 1. 2017   #214648

 jo, to tam nema byt, to jsou zapomenute pomocne radky z tveho dotazu

  (
  SELECT ID_Rady, Rada, ID_Prod, Produkt, ID_Objemu, Objem_T
FROM
peter
MS SQL › Odstranění duplicitních řádk…
25. 1. 2017   #214647

Aha, takze mozna chces jen jednoduchy dotaz. Nejsem si ale jisty, jestli chapu, co je ve ktere tabulce, co vlastne vybiras. Tu, ze ktere vybiras, musi byt ta prvni. Na tu nabalujes ostatni. Treba, chces seznam knih, ktere napsal autor. Tak prvni tabulka je propojeni id_autor, id_kniha. Na tu nabalis tabulku s nazvem knih a jmena autoru.

SELECT
  a.ID_Rady,
  b.Rada,
  c.Produkt,
  d.Objem_T
FROM
  (
  SELECT ID_Rady, Rada, ID_Prod, Produkt, ID_Objemu, Objem_T
FROM
  HDL_ProduktyDef a
    LEFT JOIN HDL_ProdRady AS b on b.ID=a.ID_Rady
    LEFT JOIN HDL_Produkty AS c on c.ID=a.ID_Prod
    LEFT JOIN HDL_Objemy AS d on o.ID=a.ID_Objemu
WHERE
  a.ID_Rady=5 AND
  a.ID_Prod=5 AND
  a.ID_Objemu=6
peter
MS SQL › Odstranění duplicitních řádk…
25. 1. 2017   #214646

Viz hlucheucho. Seznam tabulek, struktura, vysledek vzor.

Priklad
lide: id_lide, jmeno, prijmeni, id_bydliste
bydliste: id_bydliste, mesto

 Vyber vsechna Brna z tabulky bydlist a prilep k nim cloveka

SELECT
  a.mesto, 
  b.jmeno, 
  b.prijmeni
FROM
  bydliste a
    LEFT JOIN lide b ON b.id_bydliste=a.id_bydliste
WHERE
  a.mesto="Brno"

Vyber vsechny lidi, prilep k nim radky z bydliste a porovnej, kteri jsou z Brna

SELECT
  b.mesto, 
  a.jmeno, 
  a.prijmeni
FROM
  lide a
    LEFT JOIN bydliste b ON b.id_bydliste=a.id_bydliste
WHERE
  b.mesto="Brno"

A kdyz mas 3 tabulky, tak se vyplati udelat pro kazde porovnani vyber zvlast a zgrupovat to. Napr
(
- lide bydl = Brno: id_lide
- lide jmeno = Jan: id_lide
GROUP BY id_lide -- vyrobi seznam id_lide podle podminek,
) LEFT JOIN ostatni tabulky na vysledek.
Podminku muzes mit treba OR (Jan nebo z Brna) nebo AND (Janove z Brna); count>0, count=2
Bylo by zbytecne tam vzdy pripojovat vsechny udaje, kdyz te nejdriv stejne zajimaji idecka.

U klasickeho JOIN bacha, tam musis vedet, proc a jak ho pouzivas. Tudle tady nejaci studenti delali program na vyber publikaci podle autoru a kdyz zadali 6 autoru a asi 1000 publikaci, tak to zahltilo procesor na 10 dni :) Nekterou ved. publikaci pise cely tym, treba 3-4 autori. A tazatele zajimalo, kolik publikaci vydalo konkretnich 6 osob. Kdyz si dal kazdeho autora zvlast, tak dotaz udelal blik a hotovo. Takze jsem dotaz slozil ze 6 dotazu a zgupoval to. Oni to meli udelane JOINY a tam se to umocnovalo a vytvarela jedna giganticka tabulka v pameti
((((((1000) na 1000) na 1000) na 1000) na 1000) na 1000)
No, i takove veselosti te muzou potkat :)

 

 

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