Kartézský součin tří sloupců   otázka

SQL, Databáze

Dobrý den,

snažím se přijít na to jak spojit tři sloupce dohromady ála karteziánský součin (každý řádek s každým řádkám a s každým řádkem), ale nemůžu na to přijít (dva sloupce spojit umím). Jako typický amatér asi stále zkoušim něco, co nejde a uniká mi zase nějaká základní souvislost. Pokud máte někdo nějaký tip jak na to, tak budu rád.

Díky

Jakub

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

A v jaké struktuře to máte? V SQL databázi (==> chcete napsat SQL Select dotaz - pak je to úplně stejné jako v případě dvou tabulek), nebo v nějakých polích, seznamech? ...

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

omlouvám se za nepřesný dotaz. Hraju si s MSSQL SERVEREM a mám namysli select. Používám na to JOIN, ale nějak prasím syntaxy, dva sloupce umím (ještě aby ne :) ), ale nevím jak na to když chci tři sloupce - mám použít join dvakrát nebo jak? Nepotřebuju ani tak konkrétní kód (i když za něj budu rád) ale spíš vědět jak na to, pak už si s tím rád poradím...

Díky

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

Na to se používá CROSS JOIN.

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

Ano, CROSS JOIN na spojení dvou sloupců použít umím a ošetřím i to, aby výsledek neobsahoval duplicity (např "X" s "Y" a "Y" s "X") a řádky zkombinované se sebou samým ("X" s "X"). Ale jaksi mi uniká, jak toto udělat se třemi nebo i více sloupci. Asi mi někde unikli nějaké základy nebo nechápu nějakou souvislost nebo nevím. Kam mám do scriptu vecpat ten třetí sloupec?

Díky za ochotu

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

teď mě napadlo (nemám to kde zkusit), zda to nelze takto:

select x.něco, y.něco, z.něco,
from x cross join y cross join 

a za to podmínku, aby se (x != y) a (z != x) a (z != y) atd...

to bych byl nemalej tatar jestli je to nějak takhle je (ještě jsem tři tabulky nespojoval.... :( )

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

No já osobně bych join ani nepoužil,myslím,že by mělo stačit něco takového:

select a.X,b.X,c.X from Table1 a,Table2 b,Table3 c

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

Váš příklad join neobsahuje?

select a.X,b.X,c.X from Table1 a,Table2 b,Table3 c

je to stejné jako kdyby jste použil left inner join

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

Obsahuje,ale nepřímo--tím jsem nechtěl tazatele mást :-) Je to přesně co potřebuje a nemusí chodit s kanónem na vrabce.

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