2010-08-20 110 views
3

我需要您的幫助: 我希望從表中搜索有多少用戶(id_uzy)在本週的例子中進行了預留,其次是他們保留的小時數(godzina [pl] - > hour [en])和這個小時發現所有id_urz。查詢數據庫MySQL

實施例:

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

這是我的表結構:

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 

對於這張表請幫助我找到解決辦法。

編輯 另外這裏的SQL語句添加到您的數據庫:

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對於您所追求的內容的體面解釋爲我們翻譯一些專欄名稱讓它成爲可能! – 2010-08-20 17:09:03

+0

定義一週的開始和結束日期。有人說週一是本週的開始,其他人說週日。謝謝。 – XstreamINsanity 2010-08-20 17:24:19

+0

這個例子的權利是2日期和2個星期一。所以選擇只從23/08/2010-28/08/2010 – WooCaSh 2010-08-20 17:27:18

回答

1

東西沿着這條線應該工作:

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; 

你可以再建一個WHERE語句成過濾需要。例如,如果您希望查詢運行一個動態的一週(即運行它以生成報告),您可以使用以下代碼:

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