Autor | Zpráva | ||
---|---|---|---|
MelkorNemesis Profil |
#1 · Zasláno: 9. 4. 2008, 14:01:15
Ahoj, predem - nenapadl me vhodny nazev pro topic.
Potreboval bych reseni nasledujiciho prikladu - urcite se to bude hodit i nekomu jinemu. Mame tabulku nabídky prací "job" a relacní M:N tabulku "job_languages". Kazda nabidka prace muze obsahovat více jazyku (proto M:N). takze sloupce ktere budeme potrebovat `job` - job_id `job_languages` - job_id, lang_id tabulka s jazyky nas nezajima. Kdyz mam webove rozhrani, zadam anglictinu, tak chci vyhledat prace, ktere pozaduji POUZE anglictinu, ne ktere v pozadavcich obsahuji treba ANGLICTINU + NEMCINU, aby to naslo tuto moznost, musel bych dat anglictina, nemcina. nenapada prosim nekoho, jak vyresit tento sql dotaz? stacilo by mi, kdyby job_language vratila idcka jobu diky |
||
Kajman_ Profil * |
#2 · Zasláno: 9. 4. 2008, 14:58:30
např.
select * from `job` j where j.job_id in (select s.job_id from job_languages s where s.lang_id='en') and j.job_id not in (select s.job_id from job_languages s where s.lang_id!='en') |
||
H13 Profil |
#3 · Zasláno: 9. 4. 2008, 15:05:39
a co to nějak provést pomocí php bez M:N
např: sloupce jazyk u jobu a v něm hodnota 1 .... en;de;cz; 2 .... en 3 .... de;cz; Úkol: angličtina: - najít všechny záznamy, kde se vyskytuje ve sloupci jazyku en angličtina + němčina: najít všechny záznamy, kde se vyskytuje ve sloupci jazyku en a de pouze angličtina - najít všechny záznamy, kde se vyskytuje ve sloupci jazyku en, ty pak zkontrolovat: - třeba na počet písmen - pouze dvě, znamená že je to jen angličtina - nebo rozdělit podle ; na pole, když bude mít pole pouze jednu položku, je jasné, že je to jen angličtina... atd, těch způsobů kontroly může být víc Honza |
||
MelkorNemesis Profil |
#4 · Zasláno: 9. 4. 2008, 15:44:44 · Upravil/a: MelkorNemesis
H13: bez M:N uz to tezko udelame(neni cas prekopat celou aplikaci) a navic mit sloupec takhle s hodnotama je trochu proti zasadam databazi
jinak diky Kajman_: vyzkousim, ale podle toho co jsi napsal by to mohlo fungovat, zatim diky (otazka jestli to bude fungovat pro vice jazyku naraz) - tak na vice jazyku to bohuzel nefunguje select * from `job` j where j.job_id in (select s.job_id from job_language s where s.lang_id in(1,3)) and j.job_id not in (select s.job_id from job_language s where s.lang_id in (1,3)) jazyky vkladam pomoci ID |
||
Kajman_ Profil * |
#5 · Zasláno: 9. 4. 2008, 15:56:59
otazka jestli to bude fungovat pro vice jazyku naraz
select * from `job` j where j.job_id in (select s.job_id from job_languages s where s.lang_id='en') and j.job_id in (select s.job_id from job_languages s where s.lang_id='de') and j.job_id not in (select s.job_id from job_languages s where s.lang_id not in ('en','de')) |
||
Časová prodleva: 16 let
|
0