CREATE TABLE IF NOT EXISTS `projects` (
`pid` int(15) NOT NULL AUTO_INCREMENT,
`uid` int(15) NOT NULL,
`project_category` varchar(200) NOT NULL,
`project_subcategory` varchar(200) NOT NULL,
`project_name` varchar(200) NOT NULL,
`pickup_country` varchar(200) NOT NULL,
`pickup_state` varchar(200) NOT NULL,
`pickup_city` varchar(200) NOT NULL,
blablablablabl
PRIMARY KEY (`pid`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=2 ;
CREATE TABLE IF NOT EXISTS `projects_matching` (
`pid` int(15) NOT NULL,
`city` varchar(200) NOT NULL,
`state` varchar(200) NOT NULL,
`country` varchar(200) NOT NULL,
`type` varchar(200) NOT NULL,
`expires` varchar(200) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
Tabela projects ima 28 kolona.
Upit su na fazon:
SELECT * FROM projects_matching LEFT JOIN projects ON projects_matching.pid = projects.pid WHERE projects_matching.state ='Arizona' ORDER BY projects_matching.expires DESC
pretragu uvek radim sa = , nikad sa like.
Racunao sam da je najbolje da sve podatke koji se ne menjaju (cesto ili nikad), stavim u ovu prvu tabelu, i da njoj nikad ne pristupam direktno, vec da sve pretrage radim na osnovu druge. Eventualno ako dodje do potrebe da pomenim nesto u prvoj, uradicu to tako sto cu jos pristupati preko pid-a. Da li je ovo dobro resenje?
Druga stvar, posto imam i pickup_state i delivery_state, da ne komplikujem upisujem i jedno i drugo u project matching, a u type upisem 1 ili 2 (ako nekad budem trebao da radim pretragu u kojoj ce biti bitno da li je state pickup ili delivery).
E sad, problem je taj sto ako korisnik izabere isto za pickup i delivery state, ja cu dobiti dva rezultata sa istim pid-om, sto mi naravno ne odgovara.
Znam da treba da koristim distinct da bih dobio samo jedan rezultat, ali ne znam kako?
Imam i drugu opciju, a to je da prilikom upisa podataka uradim proveru
if(pickup_state == delivery_state){delivery_state='whatever123'}
ali onda dolazim do istog problema jer upit nekad nece imati where pa cu opet morati da koristim distinct.
Tako da, sta da radim?
I da li mi je ok pocetna ideja za bazu? Pravio sam i posebne tabele u koje sam upisivao samo pid i uid(user_id), da na osnovu njih nalazim sve projekte od jednog korisnika i da ne koristim ovu tabelu i za to. Znam da je to dupliranje podataka, ali racunam da mi je vrednije da sve radi brzo neko da imam vise prostora na disku...
To je to za sad, nadam se da sam sve dobro objasnio.