[ bojan_bozovic @ 18.11.2005. 17:29 ] @
Treba mi nesto poput

Code:
 SELECT USER. * , GENDER.SEX AS VTABLE, AVERAGE
FROM USER
LEFT JOIN GENDER ON USER.UID = GENDER.USERID
LEFT JOIN VTABLE ON USER.UID = VTABLE.USERID WHERE UID=3
LIMIT 0 , 30 


Jer imam 2 tabele i ne mogu znati koju da koristim PRE upita u USER tabelu, a trebalo bi mi da smanjim broj SQL upita.

Da pojasnim - 4 tabele - USER, GENDER, GIRLS, BOYS

I umesto
Code:

SELECT USER.*, GENDER.SEX FROM USER
LEFT JOIN GENDER ON USER.UID=GENDER.USERID WHERE UID=3

Code:

SELECT USER.*, BOYS.AVERAGE FROM USER LEFT JOIN BOYS ON USER.UID=BOYS.USERID WHERE UID=3

ili GIRLS jer ne mogu da znam koji je pol korisnika pre upita.



[Ovu poruku je menjao bojan_bozovic dana 18.11.2005. u 18:39 GMT+1]

[Ovu poruku je menjao bojan_bozovic dana 18.11.2005. u 18:40 GMT+1]
[ noviKorisnik @ 18.11.2005. 21:10 ] @
Ne znam za evaluiranje naziva tabele, moram da priznam da mi zvuči zanimljivo... Samo da primetim da sam gotovo potpuno siguran da ti je u ovoj konstrukciji suvišna tabela GENDER, jer je polje SEX svojstveno za sve iz USER, a takođe i AVERAGE pa makar za ovo ne vidim ni razlog za postojanje tabela GILS'N'BOYS :-)

(... ne mora da znači da sam u pravu, nisi objasnio relacije, pa sam malo nagađao)
[ bojan_bozovic @ 18.11.2005. 21:24 ] @
Jedno pitanje, s obzirom da sam tabelu GENDER dodao upravo zato da ne bih imao pol korisnika kao tinyint(1), ako ovo ne moze da se uradi, GIRLS i BOYS tabele trebaju da drze glasove (Am I hot or not skripta) V1-V10 i prosek za rangiranje, ako sve glasove prebacim u jednu tabelu, dakle GIRLS i BOYS odu u VOTES sa WHERE na polju pol u tabeli USER, nece biti problema sa performansama? trenutno imam 2-5 upita po stranici, i voleo bih to da smanjim, ako moze to da se poboljsa (treba i top lista za clanove po kategorijama, logovanje IP i cookie za pamcenje glasova i ja sam gotov)

Code:
CREATE TABLE USER(
UID INT NOT NULL AUTO_INCREMENT,
PRIMARY KEY(UID),
USERNAME varchar(16),
EMAIL varchar(32),
PASS varchar(16),
BIRTHDAY date,
SEX tinyint(1),
PHOTO tinyint(1),
NEWPHOTO tinyint(1),
WEBSITE varchar(255),
TEXT text,
ENABLED tinyint(1)
);

CREATE TABLE BOYS(
ID INT NOT NULL AUTO_INCREMENT,
PRIMARY KEY(ID),
USERID INT NOT NULL,
V10 integer DEFAULT 0,
V9 integer DEFAULT 0,
V8 integer DEFAULT 0 ,
V7 integer DEFAULT 0,
V6 integer DEFAULT 0,
V5 integer DEFAULT 0,
V4 integer DEFAULT 0,
V3 integer DEFAULT 0,
V2 integer DEFAULT 0,
V1 integer DEFAULT 0,
AVERAGE float(7,5) DEFAULT 0
);
CREATE TABLE GIRLS(
ID INT NOT NULL AUTO_INCREMENT,
PRIMARY KEY(ID),
USERID INT NOT NULL,
V10 integer DEFAULT 0,
V9 integer DEFAULT 0,
V8 integer DEFAULT 0 ,
V7 integer DEFAULT 0,
V6 integer DEFAULT 0,
V5 integer DEFAULT 0,
V4 integer DEFAULT 0,
V3 integer DEFAULT 0,
V2 integer DEFAULT 0,
V1 integer DEFAULT 0,
AVERAGE float(7,5) DEFAULT 0
);
CREATE TABLE IPLOG(
VOTEID INT NOT NULL AUTO_INCREMENT,
PRIMARY KEY(VOTEID),
IPV4 varchar(15),
USERID INT NOT NULL
);
CREATE TABLE TEMP(
TEMPID INT NOT NULL AUTO_INCREMENT,
PRIMARY KEY(TEMPID),
USERNAME varchar(16),
EMAIL varchar(32),
PASS varchar(16),
BIRTHDAY date,
SEX tinyint(1),
NEWPHOTO tinyint(1),
WEBSITE varchar(255),
TEXT text,
ENABLED tinyint(1) DEFAULT 0
);


Eto SQL.

PS: ENABLED=0 ja ban
PHOTO=0 je onemoguceno glasanje - korisnik je obrisao svoju sliku
NEWPHOTO=1 - korisnik je zamenio sliku novom (koju trebam da odobrim)
TEMP tabela je tu da se upisuju novi korisnici (dok ih ne odobrim)

Treba jos jedna tabela za komentare. mozda, ali to tek treba da uradim, kad bude vremena.

[Ovu poruku je menjao bojan_bozovic dana 18.11.2005. u 22:37 GMT+1]

[Ovu poruku je menjao bojan_bozovic dana 18.11.2005. u 22:37 GMT+1]
[ jablan @ 18.11.2005. 21:44 ] @
Znači definitivno ti ne trebaju i GIRLS i BOYS, strpaj sve u jednu tabelu.
Takođe, polja V1..V10 bih izdvojio u posebnu tabelu VOTES (USERID, RATING, COUNT) - rating je ocena od 1 do 10, count broj glasova za tu ocenu za tu osobu.