bezpal
написал 20 мая 2005 года в 10:03 (815 просмотров)
Ведет себя
как мужчина; открыл 9 тем в форуме, оставил 9 комментариев на сайте.
Есть 2 таблицы, в первой («Товар») содержится: номер товара, название товара… во второй («Чек»): номер товара и номер чека. Необходимо вывести название товара с максимальным спросом, т.е. у которого максимальное число записей в таблице «Чек»…
Ковыряюсь с этим второй день, извращался с Max и Count как только можно… не пашет… Буду очень признателен, если напишите алгоритм решения данного запроса…
Последние комментарии
- OlegL, 17 декабря в 15:00 → Перекличка 21
- REDkiy, 8 июня 2023 года в 9:09 → Как «замокать» файл для юниттеста в Python? 2
- fhunter, 29 ноября 2022 года в 2:09 → Проблема с NO_PUBKEY: как получить GPG-ключ и добавить его в базу apt? 6
- Иванн, 9 апреля 2022 года в 8:31 → Ассоциация РАСПО провела первое учредительное собрание 1
- Kiri11.ADV1, 7 марта 2021 года в 12:01 → Логи catalina.out в TomCat 9 в формате JSON 1
ecobeing.ru
Экология и вегетарианство на благо всем живым существам Планеты.
vo
A teper mne ostalos razobratsa kak eto rabotaet
Primer s 2 tablizami «bills» i «goods».
V bills dva stolbza «id» i «id2». «id» eto primary key, «id2» external kotori silaetsa na «id» v tablize «goods».
V tablize «goods» odin stolbez «id». Eto primary key.
P.S. MYSQL 4
Вопросик у меня, решилась проблема или нет, если решилась то как,
потому что запрос из ответа Юниксоида по моему ни хрена не делает.
У меня работал. Таблица правильно создана? БД какая?
«По моему» или «ни хрена не делает"? Тестировалось? Что выдает запрос?
Ну если я правильно понял, то задача стояла вывести товар, имеющий максимальное число чеков. Твой запрос просто возвращает список товаров, с количеством чеков.
Я лично игрался с ораклом, так больше ничего не знаю.
Если обязательное условие что база MySql, тогда я согласен, так как он подзапросы не поддерживает.
Исходные данные:
Tovar
|id_tov|tov_name|
| 1 |ботинки |
| 2 |шнурки |
Chek
|id_chek|id_tov|
| 1 | 1 |
| 2 | 1 |
| 3 | 1 |
| 4 | 2 |
| 5 | 2 |
Твой запрос для Oracle в моей интерпретации:
SELECT t.id_tov, count(t.id_tov)
FROM tovar t, chek c
WHERE c.id_tov=t.id_tov
group by t.id_tov
order by (’count(t.id_tov)’)
Возращает:
|id_tov|count(t.id_tov)|
| 1| 3|
| 2| 2|
После получаса извращений у меня получилось такое:
select *
from (select id_tov, count(*) cnt
from chek ch1
group by id_tov) ch
where ch.cnt = (select max(count(ch2.id_tov)) from chek ch2 group by ch2.id_tov)
Результат:
|id_tov|cnt|
| 1| 3|
limit по вкусу.