[ Príspevkov: 3 ] 
AutorSpráva
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 02.04.11
Prihlásený: 14.08.14
Príspevky: 74
Témy: 31 | 31
NapísalOffline : 18.03.2012 1:52 | Komplikovany select

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 :)


Offline

Správca fóra
Správca fóra
Komplikovany select

Registrovaný: 27.07.07
Príspevky: 3948
Témy: 51 | 51
Bydlisko: Bratislava
NapísalOffline : 23.03.2012 8:47 | Komplikovany select

ak som to spravne pochopil, malo by ti pomoct pridat do toho tvojho velkeho selectu polozku COUNT(DISTINCT firmy_hodnotenie.user_id) AS spolu, pridat join aj na firmy_hodnotenie a pred konecnym order by dat GROUP BY firmy.id, samozrejme, treba uviest "spolu" aj v order by, kedze to chces podla toho zoradovat


_________________
NTB: Acer Aspire 4820TG 14" | CPU: Intel Core i5 2,53 GHz | VGA: ATI Mobility Radeon HD5650 1GB | RAM: 8GB DDR3 1066 MHz | HDD: 1TB SSD WD BLUE
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 02.04.11
Prihlásený: 14.08.14
Príspevky: 74
Témy: 31 | 31
Napísal autor témyOffline : 23.03.2012 16:52 | Komplikovany select

ano presne ako vravis...


 [ Príspevkov: 3 ] 


Komplikovany select



Podobné témy

 Témy  Odpovede  Zobrazenia  Posledný príspevok 
V tomto fóre nie sú ďalšie neprečítané témy.

mozno komplikovany hover

v JavaScript, VBScript, Ajax

4

662

21.10.2008 0:06

walther

V tomto fóre nie sú ďalšie neprečítané témy.

Komplikovaný problém po výmene CPU

v AMD - Advanced Micro Devices

3

688

13.11.2007 13:37

KocuR

V tomto fóre nie sú ďalšie neprečítané témy.

formular: presun <option> zo <select> do <select>

v JavaScript, VBScript, Ajax

2

786

28.09.2009 15:27

tomast7

V tomto fóre nie sú ďalšie neprečítané témy.

SELECT

v Databázy

6

1438

31.08.2006 13:50

tRizzO

V tomto fóre nie sú ďalšie neprečítané témy.

Select

v HTML, XHTML, XML, CSS

3

448

13.09.2012 21:49

1daemon1

V tomto fóre nie sú ďalšie neprečítané témy.

select

v PHP, ASP

7

668

02.05.2008 13:53

mondzo

V tomto fóre nie sú ďalšie neprečítané témy.

select

v Databázy

8

547

16.03.2012 14:09

zdeniatqo

V tomto fóre nie sú ďalšie neprečítané témy.

SELECT DISTINCT

v Databázy

1

960

04.01.2009 19:24

rooobertek

V tomto fóre nie sú ďalšie neprečítané témy.

select datetime

v Databázy

11

825

03.10.2010 11:06

KViki

V tomto fóre nie sú ďalšie neprečítané témy.

Select option

v HTML, XHTML, XML, CSS

5

624

06.06.2017 10:12

hatto13

V tomto fóre nie sú ďalšie neprečítané témy.

Prepojeny select

v Databázy

2

613

18.05.2009 18:05

p360t

V tomto fóre nie sú ďalšie neprečítané témy.

MySQL Select

v Databázy

2

433

07.04.2014 6:52

XOLOO

V tomto fóre nie sú ďalšie neprečítané témy.

Select porovnanie

v Databázy

0

0

01.01.1970 1:00

Hosť

V tomto fóre nie sú ďalšie neprečítané témy.

Multi select

v Databázy

1

338

30.05.2013 11:12

stenley

V tomto fóre nie sú ďalšie neprečítané témy.

php select

v PHP, ASP

9

668

14.10.2008 9:24

B.A.X.O

V tomto fóre nie sú ďalšie neprečítané témy.

Select script

v JavaScript, VBScript, Ajax

14

668

06.08.2012 23:51

Vojko



© 2005 - 2024 PCforum, edited by JanoF