Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737 Форумы портала PHP.SU :: Помогите правильно сформулировать запрос Mysql
SELECT`id`, sum(`количество`) sum FROM`таблица`WHERE`магазин`='магазин 1'AND(`имя`='имя 1'OR`имя`='имя 2')GROUPBY`имя`
Далее в php уже фильтруем, что нам надо, это если немного записей.
Если записей много... двумя разными запросами.
----- просто ?: сложно
oxy
Отправлено: 01 Октября, 2014 - 08:50:14
Новичок
Покинул форум
Сообщений всего: 17
Дата рег-ции: Нояб. 2013
Помог: 1 раз(а)
Да я вкурсе что возвращает какой то ид, мне не нужны данные, мне важен результат или что то, или ноль строк. В общем если говорите делать разными запросами, так и будем. Думал можно совместить...
Мелкий
Отправлено: 01 Октября, 2014 - 09:37:35
Активный участник
Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009 Откуда: Россия, Санкт-Петербург
Покинул форум
Сообщений всего: 468
Дата рег-ции: Сент. 2011 Откуда: Владивосток
Помог: 8 раз(а)
Мелкий пишет:
SELECT 'exists' FROM `tablename` WHERE `магазин`=:shop_id AND (имя, количество) IN ((:item_1, :item_1_count),(:item_2, :item_2_count))
Вот Я про это тоже думал, только у него сумма из нескольких строк
----- просто ?: сложно
Мелкий
Отправлено: 01 Октября, 2014 - 10:46:59
Активный участник
Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009 Откуда: Россия, Санкт-Петербург
Помог: 618 раз(а)
tato пишет:
только у него сумма из нескольких строк
В этом и весь вопрос: точно ли это так? И тогда второй вопрос: зачем?
Решение есть, довольно простое. Но сначала вопрос так ли это и зачем так сделано, иначе решение будет тупо бесполезным костылём.
----- PostgreSQL DBA
oxy
Отправлено: 01 Октября, 2014 - 10:53:28
Новичок
Покинул форум
Сообщений всего: 17
Дата рег-ции: Нояб. 2013
Помог: 1 раз(а)
Имя и магазин - уникальный индекс?
Нет они могут повторяться
Ну самый логичный вариант делать несколько запросов и не мучить народ)
Мелкий
Отправлено: 01 Октября, 2014 - 11:26:35
Активный участник
Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009 Откуда: Россия, Санкт-Петербург
Помог: 618 раз(а)
oxy пишет:
Нет они могут повторяться
Зачем?
----- PostgreSQL DBA
oxy
Отправлено: 01 Октября, 2014 - 14:42:32
Новичок
Покинул форум
Сообщений всего: 17
Дата рег-ции: Нояб. 2013
Помог: 1 раз(а)
Мелкий пишет:
oxy пишет:
Нет они могут повторяться
Зачем?
Вариант с магазином и товаром я взял для упрощения понимания задачи, не более.
В том то и вся проблема что надо выбирать по сумме количества. Ну если Вам не понятно так, то давайте делать выборку не по имени товара, а внесем туда еще одно поле "тип" (к примеру надо проверить есть ли в магазине 20 свитеров в сумме и 10 футболок) а повторяются они по тому что вещи могут быть разных размеров, моделей и фирм к примеру.
Короче повторяются по тому что так надо
Sail
Отправлено: 01 Октября, 2014 - 15:02:04
Участник
Покинул форум
Сообщений всего: 1131
Дата рег-ции: Февр. 2014
Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009 Откуда: Россия, Санкт-Петербург
Помог: 618 раз(а)
oxy пишет:
Короче повторяются по тому что так надо
Ок. Я выяснял на всякий случай. Мой банальный вопрос "Имя и магазин - уникальный индекс?" порой читают как "поля имя и магазин - на каждом из них висит уникальный индекс?" или как-то так
SELECT`имя`, sum(количество)AS summary_cnt FROM tablename WHERE`магазин`=:shop_id AND имя IN(/*нужные имена, так можно составным индексом по магазин&имя эффективно выбирать*/)
Так можно получить "товар есть, всё в порядке", если есть хоть одна запись в результате и "товара нету =(" если в результате 0 строк.
total_item_names_count - это общее число разных `имя`, которые надо найти. Иначе получится, что товар в наличии, если хоть один из товаров есть.
Вполне вероятно, что удобнее будет выкинуть внешний селект и на приложении понять, какие товары в наличии есть, каких нету.
----- PostgreSQL DBA
tato
Отправлено: 02 Октября, 2014 - 01:08:16
Посетитель
Покинул форум
Сообщений всего: 468
Дата рег-ции: Сент. 2011 Откуда: Владивосток
Помог: 8 раз(а)
Мне кажится или кто0то уперся в архетектуру (=
Если много живых данных в таблице, то наверное стоит сделать какой-то денормализованный вариант, или въюху, короче подготовить данные к подобным выборкам, хотя канечно так себе решение.
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.