[ Príspevkov: 9 ] 
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 : 31.05.2011 12:03 | Zlozity SELECT z databazy...

Caute, snazim sa vytvorit velmi zlozity SELECT, tak snad mi tu bude niekto vediet pomoct...
Mam 3 tabulky: firmy, firmy_kat_2 a firmy_hodnotenie.
Mojim cielom je spojit ich v jednom SELECTE a zoradit podla nasledujucich kriterii.
1. Firmy co maju zaplateny profil su prve
2. Zaplatene firmy sa daju hodnotit, takze tie zoradit podla hodnotenia ( hodnotenie je jednoduche, je to tabulka firmy_hodnotenie) kladny hlas je 100 a zaporny 0. Zoradit to nechcem ale podla obycajneho priemeru ale podla SUM(hodnotenie), aby bol relevantny aj pocet hlasov....
3. Ostatne nezaplatene teda ani nehodnotene firmy zoradit podla nazvu....

Momentalne mi funguje tento SELECT, lenze tu niesu tie platene firmy zoradene podla hodnotenia...
Kód:
SELECT firmy_kat_2.firma, firmy.kraj, firmy.zaplatene FROM firmy_kat_2 INNER JOIN firmy ON firmy_kat_2.firma=firmy.id WHERE firmy_kat_2.kategoria='$r_kat_2[id]' AND firmy.zobrazit='ano' AND firmy.kraj='$_GET[filter_id]' ORDER BY firmy.zaplatene DESC, firmy.nazov


Potrebujem tam vsak pridat to zoradenie podla hlasovania.
Tabulka hlasovania vyzera nasledovne:
Kód:
CREATE TABLE `firmy_hodnotenie` (
  `id` int(11) NOT NULL auto_increment,
  `firma` int(10) NOT NULL,
  `hodnotenie` varchar(250) NOT NULL,
  `ip` varchar(250) NOT NULL,
  `datum` date NOT NULL,
  PRIMARY KEY  (`id`)
)


Skusal som ten SELECT spravit takto ale, nerobi to to co chcem... Vyhodi to len jeden zaznam z DB...
Kód:
SELECT firmy_kat_2.firma, firmy.kraj, firmy.zaplatene, SUM(firmy_hodnotenie.hodnotenie) AS spolu FROM firmy_kat_2 INNER JOIN firmy ON firmy_kat_2.firma=firmy.id JOIN firmy_hodnotenie ON firmy_hodnotenie.firma=firmy.id WHERE firmy_kat_2.kategoria='$r_kat_2[id]' AND firmy.zobrazit='ano' AND firmy.kraj='$_GET[filter_id]' ORDER BY firmy.zaplatene DESC, spolu, firmy.nazov


Keby mi niekto vedel pomoct, velmi by som to ocenil...


Offline

Skúsený užívateľ
Skúsený užívateľ
Obrázok užívateľa

Registrovaný: 29.10.08
Prihlásený: 30.07.12
Príspevky: 933
Témy: 2 | 2
NapísalOffline : 31.05.2011 12:59 | Zlozity SELECT z databazy...

1, nastuduj si rozdiel medzi INNER JOIN a JOIN
2, daj sem aj definicie tabuliek firmy a firmy_kat_2
3, k tabulkam priloz aj nejake vzorove data


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 : 31.05.2011 13:12 | Zlozity SELECT z databazy...

Kód:
CREATE TABLE `firmy` (
  `id` int(11) NOT NULL auto_increment,
  `zobrazit` varchar(250) collate utf8_slovak_ci NOT NULL,
  `nazov` text collate utf8_slovak_ci NOT NULL,
  `zaplatene` date NOT NULL,
  `kraj` int(10) NOT NULL,
  `okres` int(10) NOT NULL,
  `ulica` varchar(250) collate utf8_slovak_ci NOT NULL,
  `mesto` varchar(250) collate utf8_slovak_ci NOT NULL,
  `psc` varchar(250) collate utf8_slovak_ci NOT NULL,
  `email` varchar(250) collate utf8_slovak_ci NOT NULL,
  `login` varchar(250) collate utf8_slovak_ci NOT NULL,
  `heslo` varchar(250) collate utf8_slovak_ci NOT NULL,
  `telefon` varchar(250) collate utf8_slovak_ci default NULL,
  `fax` varchar(250) collate utf8_slovak_ci NOT NULL,
  `mobil` varchar(250) collate utf8_slovak_ci NOT NULL,
  `ico` int(11) default NULL,
  `dic` varchar(250) collate utf8_slovak_ci NOT NULL,
  `ic_dph` int(11) default NULL,
  `obrazok` varchar(250) collate utf8_slovak_ci NOT NULL,
  `web` varchar(250) collate utf8_slovak_ci NOT NULL,
  `popis_short` text collate utf8_slovak_ci NOT NULL,
  `popis` text collate utf8_slovak_ci NOT NULL,
  `mapa` text collate utf8_slovak_ci NOT NULL,
  `akcia` varchar(250) collate utf8_slovak_ci NOT NULL,
  `datum` datetime NOT NULL,
  PRIMARY KEY  (`id`)
)

INSERT INTO `firmy` VALUES (4, 'ano', 'AUTO DANUBIUS s.r.o.', '2012-01-01', 1, 0, 'Trnavská cesta 39', 'Bratislava - Nové Mesto', '831 04', '', '', '', '', '', '', 0, '', 0, '', '', '', '', '', '', '2011-03-19 21:27:54');


Kód:
CREATE TABLE `firmy_kat_2` (
  `id` int(11) NOT NULL auto_increment,
  `firma` int(11) NOT NULL,
  `kat_1` int(10) NOT NULL,
  `kategoria` int(10) NOT NULL,
  PRIMARY KEY  (`id`)
)

INSERT INTO `firmy_kat_2` VALUES (9, 5, 6, 11);


Offline

Skúsený užívateľ
Skúsený užívateľ
Obrázok užívateľa

Registrovaný: 29.10.08
Prihlásený: 30.07.12
Príspevky: 933
Témy: 2 | 2
NapísalOffline : 31.05.2011 19:48 | Zlozity SELECT z databazy...

takze zlozity select nieje ani zdaleka zlozity, hned z rukava ti davam dve moznosti
Kód:
SELECT FIRMY_KAT_2.FIRMA, FIRMY.KRAJ, FIRMY.ZAPLATENE, (select sum(FIRMY_HODNOTENIE.HODNOTENIE) from  FIRMY_HODNOTENIE where FIRMY_HODNOTENIE.FIRMA=FIRMY.ID )AS SPOLU
FROM FIRMY_KAT_2 JOIN FIRMY ON FIRMY_KAT_2.FIRMA=FIRMY.ID       
WHERE FIRMY_KAT_2.KATEGORIA=11
AND FIRMY.ZOBRAZIT='ano'
AND FIRMY.KRAJ=1
ORDER BY firmy.zaplatene DESC, spolu, firmy.nazov


Kód:
SELECT FIRMY_KAT_2.FIRMA, FIRMY.KRAJ, FIRMY.ZAPLATENE, sum(FIRMY_HODNOTENIE.HODNOTENIE) AS SPOLU
FROM FIRMY_KAT_2 JOIN FIRMY ON FIRMY_KAT_2.FIRMA=FIRMY.ID
                 LEFT JOIN FIRMY_HODNOTENIE ON FIRMY_HODNOTENIE.FIRMA=FIRMY.ID
WHERE FIRMY_KAT_2.KATEGORIA=11
AND FIRMY.ZOBRAZIT='ano'
AND FIRMY.KRAJ=1
group by FIRMY_KAT_2.FIRMA, FIRMY.KRAJ, FIRMY.ZAPLATENE
ORDER BY firmy.zaplatene DESC, spolu, firmy.nazov


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 : 01.06.2011 12:39 | Zlozity SELECT z databazy...

No vyskusal som tieto dve moznosti, ale ziadna to nezobrazuje podla scitania tych hodnoteni. Firmy vypise dobre z DB ale stale som tam kde som bol...


Offline

Skúsený užívateľ
Skúsený užívateľ
Obrázok užívateľa

Registrovaný: 29.10.08
Prihlásený: 30.07.12
Príspevky: 933
Témy: 2 | 2
NapísalOffline : 01.06.2011 13:13 | Zlozity SELECT z databazy...

no mozno preto ze selecty ktore som ti poslal boli zatial iba opravou tvojho problemu ze ti tvoj select vracal iba jeden riadok. mozno ak vysvetlis ako identifikujem firmu ktora ma zaplateny profil tak by sme sa pohli dalej.


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 : 01.06.2011 13:23 | Zlozity SELECT z databazy...

V tabulke FIRMY je stlpec ZAPLATENE (date), takze ak je datum vacsi ako dnes, tak je zaplatena a konkretne do toho datumu....
A princip hodnotenia som popisal v prvom prispevku...


Offline

Skúsený užívateľ
Skúsený užívateľ
Obrázok užívateľa

Registrovaný: 29.10.08
Prihlásený: 30.07.12
Príspevky: 933
Témy: 2 | 2
NapísalOffline : 01.06.2011 14:07 | Zlozity SELECT z databazy...

nenijesom odbornik na mysql, ale preco nepouzijes IF ?
Kód:
SELECT FIRMY_KAT_2.FIRMA, FIRMY.KRAJ, FIRMY.ZAPLATENE, sum(FIRMY_HODNOTENIE.HODNOTENIE) AS SPOLU
 FROM FIRMY_KAT_2 JOIN FIRMY ON FIRMY_KAT_2.FIRMA=FIRMY.ID
                  LEFT JOIN FIRMY_HODNOTENIE ON FIRMY_HODNOTENIE.FIRMA=FIRMY.ID
 WHERE FIRMY_KAT_2.KATEGORIA=11
 AND FIRMY.ZOBRAZIT='ano'
 AND FIRMY.KRAJ=1
 group by FIRMY_KAT_2.FIRMA, FIRMY.KRAJ, FIRMY.ZAPLATENE
 ORDER BY IF(firmy.zaplatene<NOW(),1,0) , spolu, firmy.nazov

toto by malo zotriedit najprv tie co maju zaplateny profil a v ramci nich podla SUM(FIRMY_HODNOTENIE.HODNOTENIE) a nasledne este podla nazvu firmy


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 : 01.06.2011 21:04 | Zlozity SELECT z databazy...

No vyzera ze to ide. Dakujem velmi pekne za pomoc ;)


 [ Príspevkov: 9 ] 


Zlozity SELECT z databazy...



Podobné témy

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

zlozity UPDATE (problem)

v Databázy

2

598

17.03.2010 13:15

marek26

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

EXCEL zlozity vypocet

v Ostatné programy

0

487

04.09.2016 13:28

mkojtal

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

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

v Frontend

2

844

28.09.2009 15:27

tomast7

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

select

v Backend

7

722

02.05.2008 13:53

mondzo

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

Select

v Frontend

3

513

13.09.2012 21:49

1daemon1

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

SELECT

v Databázy

6

1496

31.08.2006 13:50

tRizzO

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

select

v Databázy

8

611

16.03.2012 14:09

zdeniatqo

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

Stromový select

v Backend

5

487

07.05.2009 19:08

Tominator

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

php select

v Backend

9

713

14.10.2008 9:24

B.A.X.O

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

Select script

v Frontend

14

742

06.08.2012 23:51

Vojko

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

SELECT OPTION

v Frontend

3

621

06.03.2009 14:34

Ďuri

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

Multi select

v Databázy

1

388

30.05.2013 11:12

stenley

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

Komplikovany select

v Databázy

2

617

23.03.2012 16:52

general667

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

MySQL Select

v Databázy

2

502

07.04.2014 6:52

XOLOO

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

select nefunkcny

v Databázy

5

633

07.06.2010 14:08

MisakNo10

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

Select option

v Frontend

5

673

06.06.2017 10:12

hatto13



© 2005 - 2026 PCforum, edited by JanoF