Tema: [MySQL] -
Pogledajte određenu poruku
Staro 09. 02. 2008.   #1
mb_sa
profesionalac
Qualified
 
Datum učlanjenja: 19.05.2007
Poruke: 123
Hvala: 13
3 "Hvala" u 3 poruka
mb_sa is on a distinguished road
Default [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;
Na indexu stranice imam 4 pozicije za vijesti (jedna vijest, jedana pozicija). Pozicija 1 je na vrhu stranice, dok su Pozicije 2, 3 i 4 na dnu stranice.
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
Medjutim, moje pitanje je sljedeće!!
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 13:30. Razlog: naslov - Odredjivanje pozicije vijesti sa jedniom SQL upitom
mb_sa je offline   Odgovorite uz citat