Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 03.11.2015, 01:16   #1
moshkin_ura
Web Studio "БЕЛКО"
Форумчанин
 
Аватар для moshkin_ura
 
Регистрация: 15.08.2011
Сообщений: 180
Вопрос Выбор записей из БД и изменение кол-во

Здравствуйте, ТЫЖпрограммисты.
Появилась проблема
Для начала напишу что есть:

База(предположим корзина покупок):
Код:
/id/id_user/id_sub/count/
/1/1/1/1/
/2/1/1/2/
/3/1/2/1/
/4/1/3/3/
/5/1/4/1/
/6/2/2/2/
............
Как в MySQL сделать запрос, что-бы: НЕ выбирать строку если id=1 И ЕСЛИ count=1 а если count>1 то строку выбрать но count-1(кол-во минус "1")
притом что в одном запросе
Код:
НЕ выбирать строку если id=1 И ЕСЛИ count=1 а если count>1 то строку выбрать но count-1(кол-во минус "1")
может быть несколько id.
Многие методы перечитал в нете, так и не нащел подходящего.
По сути после развертывывания запроса, у меня должен появится массив такого вида(если исключения id будут 1 и 3 и 4)
PHP код:
array(
   [
0]= array(
      [
id]=>2
      
[id_user]=>1
      
[id_sub]=>1
      
[count]=>2
   
)
   [
1]= array(
      [
id]=>4
      
[id_user]=>1
      
[id_sub]=>2
      
[count]=>2
   
)
   [
2]= array(
      [
id]=>5
      
[id_user]=>1
      
[id_sub]=>4
      
[count]=>1
   
)

В логическом варианте я бы написал так, но так не работает
PHP код:
SELECT FROM `cartWHERE `id_user`=AND (id NOT IN (1) AND `count`=1) AND (id NOT IN (3) AND `count`=1) AND (id NOT IN (4) AND `count`=1
потом прогнал бы массив в цикле, и где совпадения в id, просто взял бы count - 1 сделал.
Есть три способа отвечать на вопросы: сказать необходимое, отвечать с приветливостью и – наговорить лишнего
Плутарх - (ок. 46 — ок.120) - древнегреческий писатель, историк
moshkin_ura вне форума Ответить с цитированием
Старый 03.11.2015, 07:40   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Код:
select case when count>1 then count-1 else count end as count, ...
where `id_user`=1 AND (count>1 or not (id in (1,3,4)))
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 03.11.2015, 07:59   #3
ADSoft
Старожил
 
Регистрация: 25.02.2007
Сообщений: 4,160
По умолчанию

чет мне кажется что переведя с русского
Цитата:
НЕ выбирать строку если id=1 И ЕСЛИ count=1 а если count>1 то строку выбрать но count-1(кол-во минус "1")
на SQL, должно получится что-то вроде
Код:
SELECT IF(count>1,count-1,count) as count, ...
where  NOT(`id`=1 AND count=1)
ADSoft на форуме Ответить с цитированием
Старый 03.11.2015, 21:58   #4
moshkin_ura
Web Studio "БЕЛКО"
Форумчанин
 
Аватар для moshkin_ura
 
Регистрация: 15.08.2011
Сообщений: 180
По умолчанию

Цитата:
Сообщение от ADSoft Посмотреть сообщение
чет мне кажется что переведя с русского

на SQL, должно получится что-то вроде
А почему у меня выводить только столбец count? мне как бы надо все получить

А если взять сделать запрос:
Код:
SELECT * FROM `cart` WHERE `id` IN(1,3,4)
В массиве сделать все что нужно, а потом через `id` NOT IN(1,3,4)
дозаписать массив
Или это говнокод?
Есть три способа отвечать на вопросы: сказать необходимое, отвечать с приветливостью и – наговорить лишнего
Плутарх - (ок. 46 — ок.120) - древнегреческий писатель, историк

Последний раз редактировалось Stilet; 04.11.2015 в 09:22.
moshkin_ura вне форума Ответить с цитированием
Старый 03.11.2015, 22:24   #5
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Цитата:
А почему у меня выводить только столбец count
Кто-то заставляет? Перечисляй все нужные поля
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 03.11.2015, 23:11   #6
moshkin_ura
Web Studio "БЕЛКО"
Форумчанин
 
Аватар для moshkin_ura
 
Регистрация: 15.08.2011
Сообщений: 180
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
Кто-то заставляет? Перечисляй все нужные поля
Не работает в общем, там где count=1 их уберает, а там где count>1 минус 1 не делает.
И кстати я кажется понял, она мне показывает ВСЕ ИД где есть count=1 и там где count>1 просо минус 1 делает
Короче эти 2 варианта не прокатывают
Есть три способа отвечать на вопросы: сказать необходимое, отвечать с приветливостью и – наговорить лишнего
Плутарх - (ок. 46 — ок.120) - древнегреческий писатель, историк
moshkin_ura вне форума Ответить с цитированием
Старый 04.11.2015, 08:22   #7
ADSoft
Старожил
 
Регистрация: 25.02.2007
Сообщений: 4,160
По умолчанию

Юра..... Перечисляйте нужные поля через запятую после count, насчёт правильно неправильно - запрос делает именно то, что вы написали на русском языке. Или вы неверно формулируете задачу или однотиз двух...
ADSoft на форуме Ответить с цитированием
Старый 04.11.2015, 08:32   #8
moshkin_ura
Web Studio "БЕЛКО"
Форумчанин
 
Аватар для moshkin_ura
 
Регистрация: 15.08.2011
Сообщений: 180
По умолчанию

Цитата:
Сообщение от ADSoft Посмотреть сообщение
Юра..... Перечисляйте нужные поля через запятую после count, насчёт правильно неправильно - запрос делает именно то, что вы написали на русском языке. Или вы неверно формулируете задачу или однотиз двух...
Уже сделал, только по своему варианту как я писал выше через IN и NOT IN
Есть три способа отвечать на вопросы: сказать необходимое, отвечать с приветливостью и – наговорить лишнего
Плутарх - (ок. 46 — ок.120) - древнегреческий писатель, историк
moshkin_ura вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Выборка и подсчет кол-ва записей одним запросом WennY SQL, базы данных 1 02.07.2013 16:00
Кол-во записей в заголовках веток dbTreeView Aleks_www Общие вопросы Delphi 0 01.12.2010 08:44
IBQuery как узнать кол-во записей? Yuran БД в Delphi 5 03.09.2010 23:11
Кол-во похожих записей БД Access one1991 БД в Delphi 14 30.05.2010 12:41
Удалить заданое кол-во записей из указанного файла. Ketu Паскаль, Turbo Pascal, PascalABC.NET 4 12.06.2008 18:48