Autor Zpráva
maikis
Profil *
lidi jak udělat hledání obyčejný sql dotaz umím jenže mě to má hledat ve více tabulkách ...

jsou dvě tabulky s kategoriemi jsou na sebe vázané

>kat1
id
nazev
>kat2
id
nazev
id1

pak mám tabulky s daty a jsou vytvořené způsobem že název je číslo id(kat) a pokud je to kat1 tak a_*id nebo kat2 b_*id tz.
např:
>a_1 //je to kat1 id=1
id
nazev
popis
>b_1 //kat2 id=1
id
nazev
popis

potřbeuju to stím taky že mi to ve výsledku vypíše i pod jakou kat. to patří tak ID kat1 a kat2 pokud není kat2 tak 0
pochopili jste to? a chtěl bych to prohledávat vždy všecko a nenapadá mě jak :-D
pokud to vubec pude ale mělo by jít nějak

pokud se o to někdo pokusí budu rád já se do toho pouštím taky ted ikdyž se mi to ale nedaří : - /
maikis
Profil *
a tabulek s daty a_* b_* je tolik kolik je položek v kat1 nebo kat2 takže by tam mělo být i něco co vám vypíše ty id aby jste mohli určit názvy těch dalších tabulek ve kterých to má hledat
souki
Profil
tak to je imho už špatně navrřená databáze
maikis
Profil *
jakto? ono ty první dvě tabulky kat1 a kat2 jsou tak kvůli menu a ten zbytek kvůli importu dat do DB já totiž ty data tam nasoukám pod ty položky v menu tímto způsobem, musí to jít nějak udělat aby to projelo postupně všecko

nebo snad ne?
Joker
Profil
maikis
Pokud máte v tabulce sloupce anebo v databázi tabulky pojmenované:
jmeno1, jmeno2, jmeno3, jmeno4,...
tak bych zbystřil. Tohle bývá známka špatného návrhu databáze.

Jinak to na co se ptáte: od toho slouží v SQL dotazu spojení tabulek- JOIN. To vytvoří novou tabulku, která je kartézským součinem těch spojovaných tablek (tj. obsahuje všechny kombinace jejich řádků). Málokdy potřebujete všechny kombinace, většinou si řádky párujete podle nějaké hodnoty (a často dokonce máte řádky 1:1 podle nějakého id)
Takže tab1 JOIN tab2 ON tab1.sloupec = tab2.sloupec
První věc teda jakmile použijete JOIN, tak na všechny sloupce vyskytující se v obou tabulkách se musíte odkazovat jako tabulka.sloupec. A z praktických důvodů bych to dělal u úplně všech sloupců
Druhá věc, že při spojení JOIN ON budou ve výsledku jen řádky obou tabulek, které lze podle té podmínky spárovat, tj. pokud mám třeba v první tabulce ID kterému neodpovídá žádné ID z druhé tabulky, vůbec se takový řádek ve výsledku neobjeví. Pokud byste ho tam chtěl, musíte použít LEFT/RIGHT (OUTER) JOIN
Toto téma je uzamčeno. Odpověď nelze zaslat.

0