Помогите составить запрос по выводу значений. Есть таблица: [img src=http://saveimg.ru/show-image.php?id=8886377924f808673d5deed0d834712f][/img] http://saveimg.ru/show-image.php?id=8886377924f808673d5deed0d834712f Под значением 'numbar' = 4 есть дата которая соответствует значениям семи рядам в 'date_sig' Нужно вивести все значения 'id' в которых действует правило date_sig=date Код (PHP): SELECT * FROM table1 WHERE date_sig=(SELECT date FROM table1 WHERE date_sig=date) Как-то так... PHP, JavaScript, SQL и другой код пишите внутри тегов Код ( (Unknown Language)): [b]php][/b]Тут код[b][/[/b][b]code][/b][/color]
Выложи схему базы и данные в SQL, в PHPMyAdmin вкладка экспорт. Вот примерный вариант: Код (PHP): SELECT * FROM `table1` WHERE `date_sig` IN (SELECT `date_sig` FROM `table1` WHERE `number` = '4')
Код (PHP): CREATE TABLE IF NOT EXISTS `tabled` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `date_sig` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00', `numbar` smallint(6) NOT NULL, `date` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00', `numcon` smallint(6) NOT NULL, `con` smallint(6) NOT NULL, `buzz` smallint(6) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=59 ; INSERT INTO `tabled` (`id`, `date_sig`, `numbar`, `date`, `numcon`, `con`, `buzz`) VALUES (1, '2015.11.11 03:00:00', 1, '2015.11.11 00:00:00', 11, 35, 8); INSERT INTO `tabled` (`id`, `date_sig`, `numbar`, `date`, `numcon`, `con`, `buzz`) VALUES (2, '2015.11.11 03:00:00', 2, '2015.11.11 01:00:00', 28, 35, 5); INSERT INTO `tabled` (`id`, `date_sig`, `numbar`, `date`, `numcon`, `con`, `buzz`) VALUES (3, '2015.11.11 03:00:00', 3, '2015.11.11 02:00:00', 28, 35, 5); INSERT INTO `tabled` (`id`, `date_sig`, `numbar`, `date`, `numcon`, `con`, `buzz`) VALUES (4, '2015.11.11 03:00:00', 4, '2015.11.11 03:00:00', 14, 35, 5); INSERT INTO `tabled` (`id`, `date_sig`, `numbar`, `date`, `numcon`, `con`, `buzz`) VALUES (5, '2015.11.11 03:00:00', 5, '2015.11.11 04:00:00', 28, 35, 5); INSERT INTO `tabled` (`id`, `date_sig`, `numbar`, `date`, `numcon`, `con`, `buzz`) VALUES (6, '2015.11.11 03:00:00', 6, '2015.11.11 05:00:00', 28, 35, 5); INSERT INTO `tabled` (`id`, `date_sig`, `numbar`, `date`, `numcon`, `con`, `buzz`) VALUES (7, '2015.11.11 03:00:00', 7, '2015.11.11 06:00:00', 28, 35, 5); INSERT INTO `tabled` (`id`, `date_sig`, `numbar`, `date`, `numcon`, `con`, `buzz`) VALUES (8, '2015.10.09 09:00:00', 1, '2015.10.09 06:00:00', 28, 35, 5); INSERT INTO `tabled` (`id`, `date_sig`, `numbar`, `date`, `numcon`, `con`, `buzz`) VALUES (9, '2015.10.09 09:00:00', 2, '2015.10.09 07:00:00', 18, 15, 5); INSERT INTO `tabled` (`id`, `date_sig`, `numbar`, `date`, `numcon`, `con`, `buzz`) VALUES (10, '2015.10.09 09:00:00', 3, '2015.10.09 08:00:00', 28, 77, 5); INSERT INTO `tabled` (`id`, `date_sig`, `numbar`, `date`, `numcon`, `con`, `buzz`) VALUES (11, '2015.10.09 09:00:00', 4, '2015.10.09 09:00:00', 28, 35, 5); INSERT INTO `tabled` (`id`, `date_sig`, `numbar`, `date`, `numcon`, `con`, `buzz`) VALUES (12, '2015.10.09 09:00:00', 5, '2015.10.09 10:00:00', 28, 35, 8); INSERT INTO `tabled` (`id`, `date_sig`, `numbar`, `date`, `numcon`, `con`, `buzz`) VALUES (13, '2015.10.09 09:00:00', 6, '2015.10.09 11:00:00', 28, 44, 5); INSERT INTO `tabled` (`id`, `date_sig`, `numbar`, `date`, `numcon`, `con`, `buzz`) VALUES (14, '2015.10.09 09:00:00', 7, '2015.10.09 12:00:00', 28, 35, 5); Я думаю можно сделать так, сравнить date_sig=date на существование одинаковой даты. Если дата существует выводим ее... а далее выводим значения где date_sig= этой дате одинаковая дата всегда будет когда `number` = '4' ... но это я думаю запросу не поможет
Как понять конкретная дата ? в date всегда (и под`number` = '4') существует дата =(такая же) как в date_sig
Он имел в виду вот что: "конкретная дата" это значение типа '2015-10-09 09:00:00', а не поле `date`. Как по мне, понятно что у тебя там стоит слово date. Ошибку ты сам указал: для каждого значения date_sig у тебя есть пара в date. Поэтому условие WHERE date_sig=date соответствует ВСЕМ записям в таблице. А ты хочешь получить только записи с конкретным значеним date_sig. Ты пытаешся смешать разные случаи. 1. Если тебе надо вывести все id записей, у которых date_sig равен значению '2015-11-11 03:00:00', то буквально так и пиши: Код (PHP): SELECT id FROM tabled WHERE date_sig='2015-11-11 03:00:00' 2. Если тебе надо вывести значения date_sig, которые в принципе встречаются в date (в твоём примере есть две таких группы), то это так: Код (PHP): SELECT t1.`date_sig`, COUNT(*) AS `cnt` FROM `tabled` AS t1 JOIN `tabled` AS t2 ON t1.`date_sig`=t2.`date` GROUP BY t1.`date_sig` 3. Можно попытаться вставить условие numbar=4 и найти все записи с совпадающей его датой, но фигня в том, что numbar у тебя не уникален и в твоём примере под такое условие попадут такие date, с которыми совпадут все значения date_sig ))) Опаньки! Поэтому запрос от denis01 нерабочий. А вот если мы используем уникальный id=4, то получим одно значение `date` и ему соответствует 7 `date_sig` — как ты хотел. Вот так: Код (PHP): SELECT t1.`id` FROM `tabled` AS t1 JOIN `tabled` AS t2 ON t2.`date` = t1.`date_sig` WHERE t2.`id` = 4
Если я сделаю такой запрос: Код (Text): SELECT id FROM tabled WHERE date_sig=date Вывод ''id": 4 11 ------------------------------- Все правильно и логично потому что date_sig=date + сюда нужно еще включить все значения в которых date_sig = '2015-11-11 03:00:00' ( она же "date" ) Мне нужно вывести "numbar", должно быть так: 1 2 3 4 5 6 7 1 2 3 4 5 6 7 ------------------- такой запрос не правильный но логика такая: Код (Text): сдесь будет: 2015.11.11 03:00:00 и 2015.10.09 09:00:00 SELECT * FROM tabled WHERE date_sig = (SELECT date FROM tabled WHERE date_sig=date)
Я ничерта не понял. ))) Друг, учись формулировать вопросы. В хорошем вопросе половина решения. Вот тебе песочница, пробуй: http://sqlfiddle.com/#!9/48165 мне уже жаль потраченного времени