Zdravim,
pokusam sa dat dokopy komplikovany SELECT ale nedari sa mi to...
Mam taketo tabulky:
Kód:
CREATE TABLE firmy (
id INT(11) NOT NULL AUTO_INCREMENT,
publikovat VARCHAR(250) NOT NULL,
nazov_sk TEXT NOT NULL,
nazov_en TEXT NOT NULL,
nazov_de TEXT NOT NULL,
ulica VARCHAR(250) NOT NULL,
mesto VARCHAR(250) NOT NULL,
psc VARCHAR(250) NOT NULL,
email VARCHAR(250) NOT NULL,
login VARCHAR(250) NOT NULL,
heslo VARCHAR(250) NOT NULL,
telefon VARCHAR(250),
mobil VARCHAR(250),
fax VARCHAR(250),
ico INT(11),
ic_dph VARCHAR(250),
dic VARCHAR(250),
forma VARCHAR(250),
obrazok VARCHAR(250) NOT NULL,
web VARCHAR(250) NOT NULL,
mapa TEXT,
obsah_short_sk TEXT NOT NULL,
obsah_short_en TEXT NOT NULL,
obsah_short_de TEXT NOT NULL,
obsah_sk TEXT NOT NULL,
obsah_en TEXT NOT NULL,
obsah_de TEXT NOT NULL,
registracia DATETIME,
zaplatene_od DATE,
zaplatene_do DATE,
nazov_url VARCHAR(250),
aktualizacia DATETIME,
PRIMARY KEY (id)
);
CREATE TABLE firmy_kraje_zoznam (
id INT(11) NOT NULL AUTO_INCREMENT,
publikovat VARCHAR(250) NOT NULL,
nazov_sk VARCHAR(250) NOT NULL,
nazov_en VARCHAR(250) NOT NULL,
nazov_de VARCHAR(250) NOT NULL,
obsah_sk TEXT,
obsah_en TEXT,
obsah_de TEXT,
pozicia INT(10) NOT NULL,
datum DATETIME,
upravil INT(10),
PRIMARY KEY (id)
);
CREATE TABLE firmy_okresy_zoznam(
id INT(11) NOT NULL AUTO_INCREMENT,
publikovat VARCHAR(250) NOT NULL,
kraj INT(11) NOT NULL,
nazov_sk VARCHAR(250) NOT NULL,
nazov_en VARCHAR(250) NOT NULL,
nazov_de VARCHAR(250) NOT NULL,
obsah_sk TEXT,
obsah_en TEXT,
obsah_de TEXT,
pozicia INT(10) NOT NULL,
datum DATETIME,
upravil INT(10),
PRIMARY KEY (id)
);
CREATE TABLE firmy_okresy(
id INT(11) NOT NULL AUTO_INCREMENT,
firma INT(11) NOT NULL,
okres INT(10) NOT NULL,
PRIMARY KEY (id)
);
CREATE TABLE firmy_kategorie_hlavne (
id INT(11) NOT NULL AUTO_INCREMENT,
publikovat VARCHAR(250) NOT NULL,
nazov_sk VARCHAR(250) NOT NULL,
nazov_en VARCHAR(250) NOT NULL,
nazov_de VARCHAR(250) NOT NULL,
obsah_sk TEXT,
obsah_en TEXT,
obsah_de TEXT,
pozicia INT(10) NOT NULL,
datum DATETIME,
upravil INT(10),
PRIMARY KEY (id)
);
CREATE TABLE firmy_kategorie_zoznam (
id INT(11) NOT NULL AUTO_INCREMENT,
publikovat VARCHAR(250) NOT NULL,
kat_1 INT(10) NOT NULL,
nazov_sk VARCHAR(250) NOT NULL,
nazov_en VARCHAR(250) NOT NULL,
nazov_de VARCHAR(250) NOT NULL,
obsah_sk TEXT,
obsah_en TEXT,
obsah_de TEXT,
pozicia INT(10) NOT NULL,
datum DATETIME,
upravil INT(10),
PRIMARY KEY (id)
);
CREATE TABLE firmy_kategorie(
id INT(11) NOT NULL AUTO_INCREMENT,
firma INT(11) NOT NULL,
kategoria INT(10) NOT NULL,
PRIMARY KEY (id)
);
CREATE TABLE firmy_kategorie_hl(
id INT(11) NOT NULL AUTO_INCREMENT,
firma INT(11) NOT NULL,
kategoria INT(10) NOT NULL,
PRIMARY KEY (id)
);
a takyto select:
Kód:
SELECT firmy.*
FROM firmy
LEFT JOIN firmy_okresy ON firmy_okresy.firma=firmy.id
JOIN firmy_okresy_zoznam ON firmy_okresy_zoznam.id=firmy_okresy.okres
JOIN firmy_kraje_zoznam ON firmy_kraje_zoznam.id=firmy_okresy_zoznam.kraj
WHERE firmy_okresy.okres='8' AND firmy_kraje_zoznam.id='2' AND firmy.publikovat='ano'
ORDER BY IF(firmy.zaplatene_do<NOW(),1,0), firmy.nazov_sk
toto mi funguje dobre. Mam vsak este takuto tabulku, v ktorej mam hlasy k jednotlivym firmam.
Kód:
CREATE TABLE firmy_hodnotenie(
id INT NOT NULL AUTO_INCREMENT,
kategoria INT(11) NOT NULL,
firma_id INT(11) NOT NULL,
user_id INT(11) NOT NULL,
ip VARCHAR(250) NOT NULL,
datum DATETIME NOT NULL,
PRIMARY KEY(id)
);
Kategoria - 3 kategorie (1-kvalita, 2-cena, 3-pristup)
Do toho SELECTU potrebujem doplnit, aby mi to zoradovalo firmy aj podla hodnotenia - poctu hlasov.
Hlasovanie funguje na principe, ze USER_ID moze len raz hodnotit, ale do kazdej z troch kategorii. Celkovy pocet hlasov to vsak vypocitava podla GROUP BY user_id (ak user hodnoti 3x, do celkoveho poctu hlasov zarata len 1 hlas). Chcem to vsak zoradovat podla celkoveho poctu.
Snazil som sa tam pridat nieco na styl
Kód:
SELECT COUNT(*) FROM firmy_hodnotenie AS spolu GROUP BY firmy_hodnotenie.firma_id, firmy_hodnotenie.user_id... ORDER BY spolu...
ale nefunguje to... Neviem tam proste pridat ten COUNT pre konkretnu podmienku, aby to spravilo GROUP BY user_id z tej konkretnej tabulky...
Verim ze niekto bude vediet pomoct a pochopi co chcem