Autor Zpráva
Miira
Profil *
Zdravím, nemůžu přijít na jednu věc v MySQL dotazu. Nikde nemůžu najít odpověď. Mám dvě tabulky (v nich mám uloženou nabídku zájezdů), jedna se jmenuje nabidka kde jsou informace o každém zájezdu. Každý zájezd má ID. Druhá tabulka se jmenuje terminy. Termíny k zájezdům přiřazuji pomocí ID. Probmlém je v tom že potřebuji vypsat všechny zájezdy z tabulky nabidka které nemají žádný termín. Nemůžu přijít jak na to.

Děkuji Miira
PP
Profil *
Najprv vyber všetky zájazdy, ktoré majú termíny, ulož do poľa a potom vyber všetky okrem tých čo sú v poli.
nightfish
Profil
nešlo by to takhle nějak?
select * from nabidka where id not in (select id_nabidka from terminy)
Miira
Profil *
select * from nabidka where id not in (select id_nabidka from terminy) mi bohužel nefunguje. To s tím polem se mi zdá příliš náročné protože v té tabulce můžu mít přes 500 řádků a jestli by to nebylo moc pomalé. Nenapadá vás jiné řešení nebo si myslíte že by to přes pole nebyla taková zátěž?
nightfish
Profil
Miira
co znamená že nefunguje? ten dotaz jsem netestoval, takže je možná špatně syntakticky... a nebo máš nějakou starší verzi mysql, které nepodporuje subselecty...
Miira
Profil *
Hlásí #1064 - You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'SELECT id_zajezdu
FROM terminy)' at line 5

mám MySQL 4.0.20
nightfish
Profil
ááááha, tak v mysql 4.0 subselecty nefungují...

trošku jsem zaexperimentoval a vylezlo mi z toho

select zajezdy.id, zajezdy.nazev, terminy.termin from zajezdy left join terminy on zajezdy.id = terminy.id_zajezdu group by zajezdy.id having(terminy.termin) is null

kde zajezdy je tabulka se zajezdy a ma sloupce id a nazev
a terminy je tabulka s termíny se sloupci id, id_zajezdu (odkaz do tabulky zajezdy) a termin

bude to chtít trochu upravit na tvoje tabulky, ale mělo by to fungovat...
Toto téma je uzamčeno. Odpověď nelze zaslat.