Autor Zpráva
mirio
Profil
Ahoj,

mám otázku na správný zápis spojení dvou MySQL dotazů.

Mám dotaz A, který funguje správně...

SELECT P.ID_poradce, P.cis_poradce as aktualni_zc, P.prijmeni, P.jmeno, P.aktivni, PI.zisk_cislo as stare_zc, R.region
FROM poradce P, regiony R
LEFT JOIN poradce_INAS PI ON PI.id_poradce = P.ID_poradce
WHERE (P.id_region = R.id_region)
AND (PI.expiration = 0 OR PI.expiration IS NULL)


Pak mám dotaz B, který také dělá to, co má...

SELECT P.id_poradce, P.prijmeni, P.jmeno, P.aktivni, K.id_kariery, KN.nazev
FROM poradce P, kariery KN
LEFT JOIN por_kar K ON P.id_poradce = K.id_poradce
WHERE (K.id_kariery = KN.id_kariery)
AND (K.expiration = 0) 


A potřebuji je spojit v dotaz C, který bude dělat to co A + B dohromady, jenže si s tím nevím rady.

Asi bych měl začít takto...

SELECT P.ID_poradce, P.cis_poradce as aktualni_zc, P.prijmeni, P.jmeno, P.aktivni, PI.zisk_cislo as stare_zc, R.region, K.id_kariery, KN.nazev as pozice
FROM poradce P, regiony R, kariery KN


...ale dále jsem v koncích.

Zkusil jsem už asi milion kombinací, které tady radši ani nebudu uvádět :-) , ale žádná nevedla ke kýženému výsledku.

Poradíte, prosím?

Děkuji.


Moderátor nightfish: Vkládej prosím kódy mezi značky [pre] a [/pre] (stačí kliknout na ).
nightfish
Profil
prostou kombinací dotazů vznikne tohle:
SELECT P.ID_poradce, P.cis_poradce as aktualni_zc, P.prijmeni, P.jmeno, P.aktivni, PI.zisk_cislo as stare_zc, R.region, K.id_kariery, KN.nazev as pozice
FROM poradce P, regiony R, kariery KN
LEFT JOIN poradce_INAS PI ON PI.id_poradce = P.ID_poradce
LEFT JOIN por_kar K ON P.id_poradce = K.id_poradce
WHERE (K.id_kariery = KN.id_kariery)
AND (K.expiration = 0)
AND (K.id_kariery = KN.id_kariery)
AND (K.expiration = 0)
mirio
Profil
Ahaaaaaaaaaaaaaaa, já trouba jsem pořád špatně zapisoval ty podmínky. Nechával jsem je vždycky ve svém "JOINu", taková blbost. :-))

Dík moc!
mirio
Profil
Tak ještě nemám vyhráno. Pokud to upravím podle nightfishe, tak mi to vypíše každý záznam 6x, což je počet regionů v tabulce, ze které vycházím. To není dobře. :-((
mirio
Profil
Takto to je, myslím, správně...

SELECT P.ID_poradce, P.cis_poradce as aktualni_zc, P.prijmeni, P.jmeno, P.aktivni, PI.zisk_cislo as stare_zc, R.region, K.id_kariery, KN.nazev as pozice
FROM poradce P, regiony R, kariery KN
LEFT JOIN poradce_INAS PI ON PI.id_poradce = P.ID_poradce
LEFT JOIN por_kar K ON P.id_poradce = K.id_poradce
WHERE (P.id_region = R.id_region)
AND (PI.expiration = 0 OR PI.expiration IS NULL)
AND (K.id_kariery = KN.id_kariery)
AND (K.expiration = 0) 


P.S. Omlouvám se za nepoužití tagů.

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