Autor | Zpráva | ||
---|---|---|---|
freddy Profil * |
#1 · Zasláno: 25. 1. 2014, 18:39:08
Dobrý večer, mám menší problém a nějak nemůžu přijít na řešení. Jde mi o to, že chci aby se vypsala jen fotka, která nebyla uživatelem hodnocena, ale když jsem zadal poslední podmínku pro ověření, tak se mi nic nevypsalo. V tabulce soutez_overeni nemam nic. jen je vytvořena a připravena na použití, ale záznam žádný. Myslím, že je právě problém ten, že říkám v dotazu, že se má spojit s touto tabulkou, ale nevím jak to jinak udělat aby si tam v dotazu šáhnul a zjistil zda byla fotka hodnocena. Nevíte někdo jak tento problém vyřešit?
mysql_query("SELECT us.id,us.nazev,us.text,us.ukonceni,uz.id_user FROM soutez us JOIN soutezici uz ON us.id = uz.id_souteze JOIN soutez_overeni d ON uz.id_user = d.id_fotky WHERE d.id_fotky != '".$vys["id"]."' AND us.ukonceni > now()"); |
||
Alphard Profil |
#2 · Zasláno: 25. 1. 2014, 18:46:31
Použít
left join .
|
||
freddy Profil * |
#3 · Zasláno: 25. 1. 2014, 18:49:21
To jsem taky zkoušel a nevyšlo mi to. Pořád to nic nechce najít. Přitom mám porovnání správně. Nemůže mu vadit, že tabulka soutez_overeni je prázdná?
|
||
Alphard Profil |
#4 · Zasláno: 25. 1. 2014, 18:52:34
Asi by se měla upravit i ta nerovnost ve
where . Ve smyslu or is null . Nebo to zkuste bez těch podmínek, jestli se vůbec něco vypíše.
|
||
freddy Profil * |
#5 · Zasláno: 25. 1. 2014, 18:56:05 · Upravil/a: freddy
Bez podmínek vypíše, ale bez nich to je polotovar :-(
Jak prosím upravim tu nerovnost? Nebo spíš jak to mám zapsat aby to fungovalo? Vadí mu tato podmínka: d.id_fotky != '".$vys["id"]."' Nyní to mám: mysql_query("SELECT us.id,us.nazev,us.text,us.ukonceni,uz.id_user FROM soutez us LEFT JOIN soutezici uz ON us.id = uz.id_souteze LEFT JOIN soutez_overeni d ON uz.id_user = d.id_fotky WHERE us.ukonceni > now() AND d.id_fotky != '".$vys["id"]."' OR is null"); Ale nefunguje to |
||
Tori Profil |
freddy:
Když uživatel ohodnotí několik fotek, tak kam ukládáte informaci o těch hodnocených - do jiné tabulky? Nedala by se připojit ta? A u tabulky soutezici by možná mělo být i omezení na ID uživatele, jestli je teda uživatelů víc než jeden. edit: a tahle podmínka taky vypadá trochu neočekávaně: uz.id_user = d.id_fotky
|
||
freddy Profil * |
#7 · Zasláno: 25. 1. 2014, 19:06:51 · Upravil/a: freddy
tabulka soutez je mnou vypsana soutez
soutezici = tabulka kde se lidi registruji do souteze soutez_overeni = tam se zapisuji informace hodnoticiho proto tabulka soutez_hodnotici je dulezitou soucasti pri vypise Už mi to maká :-) Je to super. Díky všem |
||
Kajman Profil |
#8 · Zasláno: 25. 1. 2014, 19:30:27
freddy:
Možná hledáte něco jako... SELECT us.id, us.nazev, us.text, us.ukonceni, uz.id_user FROM soutez us JOIN soutezici uz ON us.id = uz.id_souteze LEFT JOIN soutez_overeni d ON uz.id_user = d.id_fotky AND d.id_hodnotitel = 42 WHERE us.ukonceni > Now() AND d.id_fotky IS NULL |
||
freddy Profil * |
#9 · Zasláno: 25. 1. 2014, 19:40:51 · Upravil/a: freddy
Tak změna, když není záznam v tabulce soutez_overeni, tak je dobry is null, ale jakmile, tam mám záznam, tak mu is null vadí. Jinak by to makalo skvěle
To funguje super, ale jak je možné, že splnuje podmínky d.id_hodnotitel = 42 a né d.id_hodnotitel != 42 přeci jenom mu chci říct, že se má vyhnout tomuto id a ne ho vyhledat. Jen se ptám. Jinak to vážně funguje přesně. a zároveň skutečně moc děkuji za pomoc Už asi rozumím. To je s kombinací stím null :-) jsem natvrdlej |
||
Časová prodleva: 11 let
|
0