Задавайте вопросы, мы ответим
Вы не зашли.
Уважаемые коллеги, есть необходимость реализации следующей задачи.
Существует БД , состоящая из нескольких однотипных таблиц (`tb_183`,`tb_214`,`tb_126`), хранящих однотипную информацию по браку , каждая таблица под отдельную номенклатуру деталей.
Пример таблицы
Неактивен
Подзапросы — это очень просто Просто пишите так, как если бы
писали на естественном языке:
SELECT 183 gb, Defect, Kokil, COUNT(Kokil)
FROM tb_183
WHERE Defect IN (SELECT Defect FROM tb_183 WHERE Data = '...' GROUP BY 1 HAVING COUNT(*) > 2)
AND Data = '...'
GROUP BY ... ORDER BY ...;
А одиночные дефекты Вас почему-то не интересуют?
Неактивен
Прошло время и появилась необходимость вернуться к незаконченным делам...
Исходные данные не изменились ( см. посты выше).
Имеем запрос вида... и получаем результат
Отредактированно Twix (16.03.2011 18:50:03)
Неактивен
Трижды перечитал, но не понял, что нужно получить. Добавить еще полей из
tb_183? Добавьте. Или я что-то не понимаю совсем
Неактивен
Нужно выполнить три запроса
select Mesto,Avtor,Stergen from tb_183 where Defect='756' and Data ='20110315' and Kokil = '29'
select Mesto,Avtor,Stergen from tb_183 where Defect='756' and Data ='20110315' and Kokil = '69'
select Mesto,Avtor,Stergen from tb_183 where Defect='756' and Data ='20110315' and Kokil = '81'
Сегодня помозговал и как вариант возникло следующее решение :
сохраняем данные запроса select 183 gb,756 Slom, Kokil, count(Kokil) as Kolichestvo from tb_183 where Defect='756' and Data ='20110315'
-> group by Kokil
-> order by Kolichestvo desc;
в файл, далее создаём таблицу , с полем id и заносим данные из файла в эту таблицу .
Далее выполняем несколько запросов вида select Mesto,Avtor,Stergen from tb_183 where Defect='756' and Data ='20110315' and id= 1;
select Mesto,Avtor,Stergen from tb_183 where Defect='756' and Data ='20110315' and id= 2;
...
...
select Mesto,Avtor,Stergen from tb_183 where Defect='756' and Data ='20110315' and id= 10;
Решение не слишком оригинальное, но всё же решение...
Неактивен
select Mesto,Avtor,Stergen from tb_183 where Defect='756' and Data ='20110315' and Kokil IN (29, 69, 81).
Или даже подзапросом:
select Mesto,Avtor,Stergen from tb_183 where Defect='756' and Data ='20110315' and Kokil IN (SELECT Kokil FROM ...);
Неактивен
paulus написал:
select Mesto,Avtor,Stergen from tb_183 where Defect='756' and Data ='20110315' and Kokil IN (29, 69, 81).
Или даже подзапросом:
select Mesto,Avtor,Stergen from tb_183 where Defect='756' and Data ='20110315' and Kokil IN (SELECT Kokil FROM ...);
Сложность в том, что вместо 29,69,81 можгут быть другие значения ( это так для примера) по этому первый вариант не подойдёт, да и второй наверное тоже.???
Неактивен
Суть вопроса в следующем.
Имеем результаты запроса в виде
+-----+------+-------+-------------+
| gb | Slom | Kokil | Kolichestvo |
+-----+------+-------+-------------+
| 183 | 756 | 29 | 4 |
| 183 | 756 | 69 | 2 |
| 183 | 756 | 81 | 2 |
+-----+------+-------+-------------+
которые показывают - какое количество какого кокиля было по данному дефекту. И следующаяя задача произвести запрос информации по каждому кокилю, количество которого например более 1.
Неактивен
Отлично, делаете по варианту номер два — вставляете этот подзапрос в скобки
Только в списке полей укажите одно поле Kokil, а не четыре, — и всё будет работать.
Неактивен
Всё , спасибо за помощь. Пока вопросы отпали.
Отредактированно Twix (18.03.2011 19:56:24)
Неактивен