nixp.ru v3.0

24 мая 2017,
среда,
18:31:36 MSK

DevOps с компанией «Флант»
bezpal написал 20 мая 2005 года в 10:03 (372 просмотра) Ведет себя как мужчина; открыл 9 тем в форуме, оставил 9 комментариев на сайте.

Есть 2 таблицы, в первой («Товар») содержится: номер товара, название товара… во второй («Чек»): номер товара и номер чека. Необходимо вывести название товара с максимальным спросом, т.е. у которого максимальное число записей в таблице «Чек»…

Ковыряюсь с этим второй день, извращался с Max и Count как только можно… не пашет… Буду очень признателен, если напишите алгоритм решения данного запроса…

xant

vo

SELECT COUNT(bills.id2),bills.id2 FROM bills, goods WHERE bills.id2=goods.id GROUP BY (bills.id2) ORDER BY (`COUNT(bills.id2)`)

A teper mne ostalos razobratsa kak eto rabotaet

xant

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

anonymous

Вопросик у меня, решилась проблема или нет, если решилась то как,

потому что запрос из ответа Юниксоида по моему ни хрена не делает.

xant
Sashok
Вопросик у меня, решилась проблема или нет, если решилась то как,

потому что запрос из ответа Юниксоида по моему ни хрена не делает.

У меня работал. Таблица правильно создана? БД какая?

потому что запрос из ответа Юниксоида по моему ни хрена не делает.

«По моему» или «ни хрена не делает"? Тестировалось? Что выдает запрос?

anonymous

Ну если я правильно понял, то задача стояла вывести товар, имеющий максимальное число чеков. Твой запрос просто возвращает список товаров, с количеством чеков.

Я лично игрался с ораклом, так больше ничего не знаю.

Если обязательное условие что база 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|

xant

limit по вкусу.