Autor Zpráva
Jack06
Profil
Dobrý den chci se zeptat, jestli jde něco jako:

Mám 5 tabulek ( a, b, c, d, e )

a chci zkontrolovat, jestli
v tabulce a je třeba nick "franta"
v tabulce b ip "192.168.1.1"
v tabulce c například "time()< time()+300"
v tabulce d třeba nick "nekdo"
v tabulce e email "aa@aa.aa"

pokud by to našlo třeba jen v jedné tabulce to co hledám tak exit;
pokud není v žádné tabulce takovej záznam tak by to pokračovalo ve scriptu.

Děkuji předem za rady
Kajman_
Profil *
Nepletete si tabulky a sloupce?

Obecně to asi lze... např.
select count(*) pocet from tabulka where sloupec='franta'
Jack06
Profil
Kajman_
Ne myslím v databázi mám 5 tabulek jako ( uzivatele, online, ban, atd) :-)
Kajman_
Profil *
Řešení je stejné.
Jack06
Profil
Kajman_
a jde to zapsat do jednoho spojení.. jakožto pomocí join nebo left join??

něco jako:
 $sel = $db->query("select u.*
                  from `users` u
                  join online_r r on u.user_nick=r.nick and u.user_law<3
                  left join {$_GET['rid']}_ss s on r.nick=s.nick
                  where (s.nick is null)"); 

Kdyžtak prosím naznač jak? díky
Joker
Profil
Jack06
Těch pět tabulek se mi zdá dost podezřelých.

Dál mi připadá, že se tam míchá víc dotazů, které spolu moc nesouvisejí. Dám příklad nesouvisejících dotazů: zda zadaný uživatel existuje a zda návštěvníkova IP adresa není blokovaná. Protože blokované IP asi nebudou vůbec záviset na tabulce uživatelů, bude potřeba udělat kartézský součin tabulek a ten pak prohledávat.
No a dělat kartézský součin pěti tabulek není zrovna nejlepší nápad.
I když těch 5 tabulek bude malých, řekněme: 2000, 500, 200, 50 a 20 řádků, kartézský součin všech pěti bude mít 200 miliard řádků.

Takže u nesouvisejících dotazů bude řekl bych lepší to udělat jako více separátních dotazů.
Jack06
Profil
Joker
Ano je to kontrola tabulek (blokovaná ip, kick z daného tématu, kill z daného tématu a další)

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: