Autor Zpráva
freddy
Profil *
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
Použít left join.
freddy
Profil *
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
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 *
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 *
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
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
Ale podmínkou na řádku 11 si nejsem jistý. Nevím, jestli nemá být hodnocena nikým nebo přihlášeným uživatelem (v příkladu má i 42).
freddy
Profil *
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

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: