Autor Zpráva
meca
Profil
Ty vogo, je zas nadpis, co ;) Nebojte, vysvětlim:

SELECT *
from tab1
LEFT JOIN tab2 on tab1.id = tab2.id_ tab1
WHERE tab1.id_neco =5 AND tab2.id_necojinyho=7

Jednoduchý dotaz. Průser je však v tom, že tab2.id_necojinyho může bejt null.. A já bych potřeboval, aby se mi přesto ten řádek vybral. Napadlo mě:

SELECT *
from tab1
LEFT JOIN tab2 on tab1.id = tab2.id_ tab1
WHERE tab1.id_neco =5 AND (tab2.id_necojinyho=7 || tab2.id_necojinyho=null)

Ale tak to očividně nefunguje. Máte někdo nějaký nápad? Děkuji...
Alphard
Profil
zkus
WHERE tab1.id_neco =5 AND (tab2.id_necojinyho=7 or tab2.id_necojinyho is null)
nightfish
Profil
tab2.id_necojinyho=null
tab2.id_necojinyho is null

http://linuxsoft.cz/mysql

EDIT: pozdě
meca
Profil
Juuu, super! Díky moc...
meca
Profil
Tak ještě to není ono :-( Sice to fungovalo. Jenže ted jiná situace..

SELECT *
from tab1
LEFT JOIN tab2 on tab1.id = tab2.id_ tab1
WHERE tab1.id_neco =5 AND (tab2.id_necojinyho=2 || tab2.id_necojinyho is null)

Tím, že už v té tabulce je něco něco s tab1.id_neco=5 vyplněnýho s tím, že se tam zároven tab2.id_necojinyho rovná 7, tak to ted u toho druhého dotazu není ani null... a já stejně potřebuju vybrat alespoň ten údaj tab1.

Achjo... Děkuji moc.
nightfish
Profil
Tím, že už v té tabulce je něco něco s tab1.id_neco=5 vyplněnýho s tím, že se tam zároven tab2.id_necojinyho rovná 7, tak to ted u toho druhého dotazu není ani null... a já stejně potřebuju vybrat alespoň ten údaj tab1.
zkus to ještě jednou, tomuhle jsem neporozuměl

pakliže je na příslušném řádku tab2.id_necojinyho nějaké jiné hodnoty, tak je potřeba tu podmínku podle této hodnoty patřičně upravit
meca
Profil
nightfish
No ne, koukej.. Zkusim to úplně celý opsat :)

Mam dvě tabulky, který potřebuju spojit v jednu, aby to dalo:

název | údaj

... A v té první tabulce jsou tedy ty parametry, ke kterým chci přidat hodnoty z druhý tabulky.

Tedy klasicky - první tabulka

id | id_neco | nazev

a druhá tabulka:

id_necojinyho | id_tab1 | udaj

---

No jo, jenže potřebuju vždy vypsat všechny názvy z první tabulky a pokud je k tomu údaj, tak ho taky.

Myslel jsem, že se to vyřeší tím "is null" jenže teď u jiného produktu id_necojinyho se ty všechny názvy nevypíšou. Respektive se vypíšou pouze ty s id_tab1, které v druhé tabulce nebylo ani jednou vyplněno.
Kajman_
Profil *
LEFT JOIN tab2 on tab1.id = tab2.id_ tab1 and tab2.id_necojinyho=2
meca
Profil
Holarí! Díky, Kajmane... Ale víš co je na tom nejhorší? Mám takový pocit, že už si mi to jednou todle radil, ale mě se to nějak z hlavy vykouřilo... Tak dvakrát díky ;)
Toto téma je uzamčeno. Odpověď nelze zaslat.

0