Autor Zpráva
peta
Profil
Potrebuji vypsat bud pocet nebo jen seznam vsech nenulovych polozek z tabulky A podle seznamu id/nazev druhu v tabulce B.

Receno jinak, v tabulce B DRUH mam
id / nazev
23 / ovoce
14 / zelenina
V tabulce A SKLAD mam seznam zbozi na sklade
id / nazev / druh
11 / jablka / 23 (tab B 23 = ovoce)
A ja bych potreboval vedet, ktery druh v tabulce SKLAD neni, abych ho mohl vyradit z tabulky DRUH.

Pripad je trosku slozitejsi, ale s upravou si poradim. Jde o to, ze je to stara databaze a asi bude treba tabulku druhy uplne prepsat, takze bych odstranil neprirazene druhy, prepsal. A v pripade noveho druhu jej pak pridal dodatecne.
Kajman_
Profil *
select b.* from druh b where b.id not in (select a.druh from sklad a)
peta
Profil
'SELECT `t2`.* FROM `pracoviste` `t2` WHERE `t2`.`id` NOT IN (SELECT `t1`.`pracov` FROM `lide` `t1`)'

Bud mi to vrati pocet = 0 nebo mam chybu v dotazu ci pri zobrazovani
Zkousel jsem zmenit NOT IN na IN, a vysledek ten samy.

Problem je, ze script pouzivam pres Plone/Zope v pythonu a zatim jeste neumim zobrazit pocet radku, takze jdu koumat dal.
Zkusim se jeste podivat, nekde bych mel mit dotaz s LEFT JOIN, ktery jsem pouzival v jinem programu pro vypis kolizi rozvrhu.
Cili zatim mi to nefunguje.


---


Pro zajimavost, pouzivam python script:
def fce_sql(query):
try: res = context['sql_tel_p4'](sql=query)
except Exception, error: return "Error = SQL dotaz: "+query + str(error)
return res
# sql_tel_p4 = nazev ZSQL method v Plone s dtml-var argumentem sql

query = 'SELECT `t2`.* FROM `pracoviste` `t2` WHERE `t2`.`id` NOT IN (SELECT `t1`.`pracov` FROM `lide` `t1`)'
vysl['sql_prac2'] = fce_sql(query=query)

Dost prace mi zabralo takto sestavit dotaz, proto to uvadim :)
peta
Profil
Tak jo, dotaz je oki, asi to funguje, jen mi to nezobrazoval

query = 'SELECT `t2`.`nazev` FROM `pracoviste` `t2` WHERE `t2`.`id` NOT IN (SELECT `t1`.`pracov` FROM `lide` `t1`)'
res = fce_sql(query=query)
resX = res[0][0] # vrati prvni polozku z dotazu
res = res.dictionaries() # prevede radky z sql dotazu na objekt-pole
vysl['sql_prac2'] = res
Toto téma je uzamčeno. Odpověď nelze zaslat.