Autor Zpráva
MelkorNemesis
Profil
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 *
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
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
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 *
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'))

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0