SQL baze podataka - Sponzor: Baze-Podataka.net MySQL, MSSQL, Oracle, Access, ODBC. Ako imate problem brže i preciznije ćete dobiti odgovor ako priložite strukturu tabela ili skript koji kreira tabele i puni ih test podacima umesto što to problem opisujete samo rečima. Sponzor: Baze-Podataka.net - Blog o bazama podataka |
|
Alati teme | Način prikaza |
09. 02. 2008. | #1 |
profesionalac
Qualified
Datum učlanjenja: 19.05.2007
Poruke: 123
Hvala: 13
3 "Hvala" u 3 poruka
|
[MySQL] - Odredjivanje pozicije vijesti sa jedniom SQL upitom
Kôd:
-- -- Table structure for table `pozicije` -- CREATE TABLE `pozicije` ( `id` int(11) NOT NULL auto_increment, `pozicija` enum('1','2','3','4') NOT NULL, `vijest_id` int(11) NOT NULL, PRIMARY KEY (`id`), UNIQUE KEY `pozicija` (`pozicija`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=4; -- -- Dumping data for table `pozicije` -- INSERT INTO `pozicije` VALUES (1, '1', 2); INSERT INTO `pozicije` VALUES (2, '2', 1); INSERT INTO `pozicije` VALUES (3, '3', 67); -- -- Table structure for table `vijesti` -- CREATE TABLE `vijesti` ( `id` int(11) NOT NULL auto_increment, `naslov` varchar(100) NOT NULL, `tekst` text, `datum` datetime NOT NULL, `datum_objave` datetime default '0000-00-00 00:00:00', PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=68; Vijesti na poziciji 2, 3, i 4 imaju isti prikaz (layout), dok vijest na Poziciji 1 ima nešto drugačiji! Znaci, treba jedan upit da izvuće vijest na Poziciju 1, i drugi za izvuče vijesti na Pozicije 2, 3, i 4. Potrebno je da omogućim bolje pozicioniranje, tj. forsiranje nekih vijesti u odnosu na druge vijesti. Dakle, u admin panelu bi trebao da administrator da pozicijama dodijeli vijesti. Svim pozicijama ne mora biti dodijeljenja vijest! Moja ideja je da se to rijesi prkeo gore navedenih tabela! Recimo sa sljedećim jendostavnim upitom dobijem vijesti soritrane po pozicijama 2, 3, i 4. Kôd:
SELECT v.naslov, p.pozicija FROM vijesti v, pozicije p WHERE v.id = p.vijest_id AND p.pozicija IN (2,3,4) ORDER BY p.pozicija Ukoliko nekoj od pozicija nije dodijeljena vijest (recimo pozicijima 1 i 3), gornji upit će naravno vratiti jedan red. tj. jednu vijest. Da li je moguće i kako da se jednim upitom vratim vijest na Poziciji 2 i jos dvije zadnje unešene vijesti? Da li to mogu uraditi na osnovu ove strukture tabela ili je jedino rješenje da ovaj problem riješim na nivou programskog jezika! Lp i hvala, mb Poslednja izmena od mb_sa : 09. 02. 2008. u 12:30. Razlog: naslov - Odredjivanje pozicije vijesti sa jedniom SQL upitom |
|
|