2010-08-20 8 views
3

J'ai besoin de l'aide de Yoour: Je veux rechercher à partir du tableau combien d'utilisateurs (id_uzy) fait une réservation par exemple cette semaine, ensuite quelles heures ils ont réservé (godzina [pl] -> hour [en]) et cette heure trouve tout id_urz.Requête à la base de données MySQL

Exemple:

  1. id_uzy-> 1-> heure (9-10) -> id_urz (2,3,4)
  2. id_uzy-> 1-> heure (10-11) -> id_urz (2,3,4)
  3. id_uzy-> 2-> heure (10-11) -> id_urz (4,5)
  4. id_uzy-> 1-> heure (12-13) -> id_urz (4,5)

C'est ma structure de table:

id_rez id_urz id_uzy data  godzina kiedy_rezerwowano 
297  4 2  2010-08-23 14-15 2010-08-20 19:07:27 
296  4 2  2010-08-23 13-14 2010-08-20 19:07:27 
295  4 2  2010-08-23 12-13 2010-08-20 19:07:27 
294  4 2  2010-08-23 11-12 2010-08-20 19:07:27 
293  26 2  2010-08-23 14-15 2010-08-20 19:07:27 
292  26 2  2010-08-23 13-14 2010-08-20 19:07:27 
291  26 2  2010-08-23 12-13 2010-08-20 19:07:27 
290  26 2  2010-08-23 11-12 2010-08-20 19:07:27 
289  4 3  2010-08-30 14-15 2010-08-20 19:07:02 
288  4 3  2010-08-30 13-14 2010-08-20 19:07:02 
287  8 3  2010-08-30 14-15 2010-08-20 19:07:02 
286  8 3  2010-08-30 13-14 2010-08-20 19:07:02 
285  1 3  2010-08-23 14-15 2010-08-20 19:06:43 
284  1 3  2010-08-23 13-14 2010-08-20 19:06:43 
283  1 3  2010-08-23 09-10 2010-08-20 19:06:43 
282  1 3  2010-08-23 08-09 2010-08-20 19:06:43 
281  6 3  2010-08-23 14-15 2010-08-20 19:06:43 
280  6 3  2010-08-23 13-14 2010-08-20 19:06:43 
279  6 3  2010-08-23 09-10 2010-08-20 19:06:43 
278  6 3  2010-08-23 08-09 2010-08-20 19:06:43 

Pour cette table s'il vous plaît me aider à trouver une solution.

EDIT également ici est Sql à ajouter à votre base de données:

CREATE TABLE IF NOT EXISTS `prz_rezerwacje` (
    `id_rez` int(5) NOT NULL AUTO_INCREMENT, 
    `id_urz` int(6) NOT NULL, 
    `id_uzy` int(3) NOT NULL, 
    `data` date NOT NULL, 
    `godzina` varchar(5) NOT NULL, 
    `kiedy_rezerwowano` datetime NOT NULL, 
    PRIMARY KEY (`id_rez`), 
    KEY `id_uzytkownika_fk` (`id_uzy`) 
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COMMENT='Rezerwacje sprzętu.' AUTO_INCREMENT=298 ; 

-- 
-- Zrzut danych tabeli `prz_rezerwacje` 
-- 

INSERT INTO `prz_rezerwacje` (`id_rez`, `id_urz`, `id_uzy`, `data`, `godzina`, `kiedy_rezerwowano`) VALUES 
(297, 4, 2, '2010-08-23', '14-15', '2010-08-20 19:07:27'), 
(296, 4, 2, '2010-08-23', '13-14', '2010-08-20 19:07:27'), 
(295, 4, 2, '2010-08-23', '12-13', '2010-08-20 19:07:27'), 
(294, 4, 2, '2010-08-23', '11-12', '2010-08-20 19:07:27'), 
(293, 26, 2, '2010-08-23', '14-15', '2010-08-20 19:07:27'), 
(292, 26, 2, '2010-08-23', '13-14', '2010-08-20 19:07:27'), 
(291, 26, 2, '2010-08-23', '12-13', '2010-08-20 19:07:27'), 
(290, 26, 2, '2010-08-23', '11-12', '2010-08-20 19:07:27'), 
(289, 4, 3, '2010-08-30', '14-15', '2010-08-20 19:07:02'), 
(288, 4, 3, '2010-08-30', '13-14', '2010-08-20 19:07:02'), 
(287, 8, 3, '2010-08-30', '14-15', '2010-08-20 19:07:02'), 
(286, 8, 3, '2010-08-30', '13-14', '2010-08-20 19:07:02'), 
(285, 1, 3, '2010-08-23', '14-15', '2010-08-20 19:06:43'), 
(284, 1, 3, '2010-08-23', '13-14', '2010-08-20 19:06:43'), 
(283, 1, 3, '2010-08-23', '09-10', '2010-08-20 19:06:43'), 
(282, 1, 3, '2010-08-23', '08-09', '2010-08-20 19:06:43'), 
(281, 6, 3, '2010-08-23', '14-15', '2010-08-20 19:06:43'), 
(280, 6, 3, '2010-08-23', '13-14', '2010-08-20 19:06:43'), 
(279, 6, 3, '2010-08-23', '09-10', '2010-08-20 19:06:43'), 
(278, 6, 3, '2010-08-23', '08-09', '2010-08-20 19:06:43'); 
+3

+1 pour une explication décente de ce que vous êtes après et pour traduire certains des noms de colonnes pour que nous le rendions possible! –

+0

Définissez les jours de début et de fin de la semaine. Certains disent que lundi est le début de la semaine, d'autres disent dimanche. Merci. – XstreamINsanity

+0

Juste pour cet exemple sont 2 date avec 2 lundi. Donc, sélectionnez seulement à partir de 23/08/2010-28/08/2010 – WooCaSh

Répondre

1

Quelque chose le long de cette ligne devrait fonctionner:

SELECT pr.id_uzy, pr.godzina, (SELECT pr2.id_urz 
          FROM prz_rezerwacje pr2 
          WHERE pr2.id_uzy = pr.id_uzy 
          AND pr2.godzina = pr.godzina) as id_urz_group 
FROM prz_rezerwacje pr; 

Vous pouvez ensuite construire une instruction WHERE pour filtrer comme nécessaire. Par exemple, si vous voulez que la requête à exécuter pendant une semaine dynamique (c.-à exécuter pour un rapport généré), vous pouvez utiliser ceci:

WHERE kiedy_rezerwowano BETWEEN DATE_SUB(NOW(), INTERVAL x DAY) AND NOW(); 
Questions connexes