| | |
| Stránka: 1 z 1
| [ Príspevkov: 9 ] | |
Autor | Správa |
---|
Registrovaný: 02.04.11 Prihlásený: 14.08.14 Príspevky: 74 Témy: 31 |
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...
|
|
Registrovaný: 29.10.08 Prihlásený: 30.07.12 Príspevky: 933 Témy: 2 | Napísal coldak: 31.05.2011 12:59 | |
|
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
|
|
Registrovaný: 02.04.11 Prihlásený: 14.08.14 Príspevky: 74 Témy: 31 |
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);
|
|
Registrovaný: 29.10.08 Prihlásený: 30.07.12 Príspevky: 933 Témy: 2 | Napísal coldak: 31.05.2011 19:48 | |
|
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
|
|
Registrovaný: 02.04.11 Prihlásený: 14.08.14 Príspevky: 74 Témy: 31 |
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...
|
|
Registrovaný: 29.10.08 Prihlásený: 30.07.12 Príspevky: 933 Témy: 2 | Napísal coldak: 01.06.2011 13:13 | |
|
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.
|
|
Registrovaný: 02.04.11 Prihlásený: 14.08.14 Príspevky: 74 Témy: 31 |
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...
|
|
Registrovaný: 29.10.08 Prihlásený: 30.07.12 Príspevky: 933 Témy: 2 | Napísal coldak: 01.06.2011 14:07 | |
|
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
|
|
Registrovaný: 02.04.11 Prihlásený: 14.08.14 Príspevky: 74 Témy: 31 |
No vyzera ze to ide. Dakujem velmi pekne za pomoc
|
|
| Stránka: 1 z 1
| [ Príspevkov: 9 ] | |
Podobné témy | Témy | Odpovede | Zobrazenia | Posledný príspevok |
---|
| EXCEL zlozity vypocet v Ostatné programy | 0 | 391 | 04.09.2016 13:28 mkojtal | | zlozity UPDATE (problem) v Databázy | 2 | 529 | 17.03.2010 13:15 marek26 | | formular: presun <option> zo <select> do <select> v JavaScript, VBScript, Ajax | 2 | 747 | 28.09.2009 15:27 tomast7 | | Select v HTML, XHTML, XML, CSS | 3 | 407 | 13.09.2012 21:49 1daemon1 | | SELECT v Databázy | 6 | 1400 | 31.08.2006 13:50 tRizzO | | select v Databázy | 8 | 502 | 16.03.2012 14:09 zdeniatqo | | select v PHP, ASP | 7 | 638 | 02.05.2008 13:53 mondzo | | select nefunkcny v Databázy | 5 | 561 | 07.06.2010 14:08 MisakNo10 | | Select option v HTML, XHTML, XML, CSS | 5 | 577 | 06.06.2017 10:12 hatto13 | | zly select v Databázy | 2 | 621 | 07.07.2012 19:59 Ďuri | | Select porovnanie v Databázy | 0 | 0 | 01.01.1970 1:00 Hosť | | select datetime v Databázy | 11 | 780 | 03.10.2010 11:06 KViki | | SELECT DISTINCT v Databázy | 1 | 933 | 04.01.2009 19:24 rooobertek | | Prepojeny select v Databázy | 2 | 586 | 18.05.2009 18:05 p360t | | Stromový select v PHP, ASP | 5 | 410 | 07.05.2009 19:08 Tominator | | php select v PHP, ASP | 9 | 615 | 14.10.2008 9:24 B.A.X.O |
| Nemôžete zakladať nové témy v tomto fóre Nemôžete odpovedať na témy v tomto fóre Nemôžete upravovať svoje príspevky v tomto fóre Nemôžete mazať svoje príspevky v tomto fóre
|
|