Autor | Zpráva | ||
---|---|---|---|
xxxx Profil * |
#1 · Zasláno: 10. 1. 2008, 18:24:51
ahoj,
SQL se teprve učím a nyni stojím před problémem: Mám dvě tabulky (mesice as m,svatky as s) ve vztahu 1:N, 1. PK jsou m.MESIC_ID, m.OSOBA_ID, s.ID_MESIC, s.ID_OSOBA, dále existuje sloupec s.SVATEK 2. sloupce s.ID_OSOBA obsahuje bud unikátni čislo osoby, anebo konstantu (napr. 0) Tou konstantou chci definovat stav, že daný svátek je pro všechny osoby, to lze vsak prekryt - personalizovat na osobu tim, že tam bude ID_OSOBY > 0. A tim vznikne pro daný den dalši řadek, kt. je navazan na konkretni osobu Stojim pred návrhem database - popisuje danou situaci tento model db dobře?, Jak bude vypadat select, v kt. chci uprednostnit vracenim personalizovaneho svatku, pred defaultnim? select m.MESIC_ID, m.OSOBA_ID, s.ID_MESIC, s.ID_OSOBA, s.SVATEK from mesice as m, svatky as s where ??? IF(m.OSOBA_ID = s.ID_OSOBA) m.OSOBA_ID = s.ID_OSOBA ??? ??? ELSE s.ID_OSOBA = 0 ??? m.MESIC_ID = s.ID_MESIC Jinak muzete mi event. poradit jaky danou situaci modelovat v db? diky tomas |
||
Alphard Profil |
#2 · Zasláno: 10. 1. 2008, 19:58:55
co třeba spojit tabulky s left join?
ve sloupci osoba poptom bude buď osoba nebo NULL a vyfiltruje se where osoba is NULL, resp. where osoba is not NULL |
||
xxxx Profil * |
#3 · Zasláno: 10. 1. 2008, 20:42:45
@Alphard
diky za reakci, mrknul sem na to.... je toto reseni? select MESIC_ID, OSOBA_ID, ID_MESIC, ID_OSOBA, SVATEK from svatky left join mesice on OSOBA_ID = ID_OSOBA select MESIC_ID, OSOBA_ID, ID_MESIC, ID_OSOBA, SVATEK from mesice right join svatky on OSOBA_ID = ID_OSOBA Snad jen lze to resit i jinak, existuje i jine reseni? |
||
Kajman_ Profil * |
#4 · Zasláno: 11. 1. 2008, 09:18:28
co v původním dotazu dát podmínku
where (m.OSOBA_ID = s.ID_OSOBA or s.ID_OSOBA=0) and m.MESIC_ID = s.ID_MESIC ? |
||
Časová prodleva: 6 dní
|
|||
xxxx Profil * |
#5 · Zasláno: 17. 1. 2008, 10:38:01
Diky za rady... obe dve reseni jsou fci...
|
||
Časová prodleva: 16 let
|
Toto téma je uzamčeno. Odpověď nelze zaslat.
0