Модераторы: skyboy
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> найти товары с разными значениями 
V
    Опции темы
vladimir74
Дата 24.7.2009, 11:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 241
Регистрация: 28.11.2006

Репутация: нет
Всего: 3



есть запрос
Код

select ad.posid,  ad.bereit 
from ad
left join pa on (ad.posid=pa.id)
left join a on (pa.auftragsid=a.id)
where a.erstellt = 'F'

posid - id товара
bereit - 'T'/'F'
надо еще выявить те товары которые имеют в bereit - 'T' и 'F'
--------------------
* В доме помешанного не говорят о миксере.* На любой Ваш вопрос у меня есть любой мой ответ.
PM MAIL   Вверх
azesmcar
Дата 24.7.2009, 11:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: нет
Всего: 211



Не совсем понятно о чем речь, поподробнее...если я правильно понимаю, то что мешает сделать тал?
Код

select ad.posid,  ad.bereit 
from ad
left join pa on (ad.posid=pa.id)
left join a on (pa.auftragsid=a.id)
where a.erstellt = 'F' and ad.bereit = 'T' and ad.bereit = 'F'

?
PM   Вверх
vladimir74
Дата 24.7.2009, 12:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 241
Регистрация: 28.11.2006

Репутация: нет
Всего: 3



не не совсем то, мне надо узнать какие из posid (они могут несколько раз повторятся) имеют только 'T' другие только 'F' 'T' и 'F'

хотя я тут подумал...
таблица а
id          1, 2, 3
erstellt {только для F}
bereit 

таблица pа
id       1, 2, 3, 4, 5, 6
a_id   1, 1, 2, 2, 2, 3
bereit

таблица аd
id                   1, 2, 3, 4, 5, 6, 7, 8, 9, 10 
posid (pa_id)  1, 2, 2, 3, 4, 4, 5, 5, 5, 6
bereit              T  T  T  F   T  F  F  T   T  F

теперь мне надо в таблице pa.bereit поставить T для всех pa.id если в таблице ad.posid все pa.bereit = T иначе F
потом тоже самое c а.bereit

Добавлено через 2 минуты и 59 секунд
т.е в конкретном примере pa получит значения
id       1, 2, 3, 4, 5, 6
a_id   1, 1, 2, 2, 2, 3
bereit T  T  F  F  T  F

потом таблица а
id          1, 2, 3
bereit   T   F  F

Добавлено через 5 минут и 3 секунды
просто я пока не представляю как это можно решить одним update  поэтому решил разделить на запрос и отдельно редактирование...
если есть возможность все сделать одним update   было бы великолепно...
--------------------
* В доме помешанного не говорят о миксере.* На любой Ваш вопрос у меня есть любой мой ответ.
PM MAIL   Вверх
vladimir74
Дата 24.7.2009, 12:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 241
Регистрация: 28.11.2006

Репутация: нет
Всего: 3



черт!!! это для Firebird
АДМИНЫ я ошибся темой!!!
перенесите плз в InterBase, Firebird
--------------------
* В доме помешанного не говорят о миксере.* На любой Ваш вопрос у меня есть любой мой ответ.
PM MAIL   Вверх
Zloxa
Дата 24.7.2009, 12:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Чо?
****


Профиль
Группа: Завсегдатай
Сообщений: 3473
Регистрация: 12.9.2008

Репутация: 53
Всего: 161



Цитата(vladimir74 @  24.7.2009,  12:08 Найти цитируемый пост)
надо узнать какие из posid (они могут несколько раз повторятся) имеют только 'T' другие только 'F' 'T' и 'F'

Код

select ad.posid
          ,case when count(distinct ad.bereit) = 1  then max(ad.bereit)
                when count(distinct ad.bereit) = 2  then 'T&F'
           end bereits
from ad
left join pa on (ad.posid=pa.id)
left join a on (pa.auftragsid=a.id)
group by ad.posid
having count(distinct ad.bereit) = 1 and max(ad.bereit) = 'T'
      or count(distinct ad.bereit) = 2 and max(ad.bereit) = 'T' and min(ad.berit) = 'F'
      or count(distinct ad.bereit) = 1 and max(ad.bereit) = 'F'


Это сообщение отредактировал(а) Zloxa - 24.7.2009, 12:36


--------------------
Достоверно известно, что 89% людей доверяют статистике взятой с потолка smile
PM   Вверх
azesmcar
Дата 24.7.2009, 12:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: нет
Всего: 211



[cut]

Это сообщение отредактировал(а) azesmcar - 24.7.2009, 12:35
PM   Вверх
Zloxa
Дата 24.7.2009, 12:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Чо?
****


Профиль
Группа: Завсегдатай
Сообщений: 3473
Регистрация: 12.9.2008

Репутация: 53
Всего: 161



Цитата(vladimir74 @  24.7.2009,  12:29 Найти цитируемый пост)
перенесите плз в InterBase, Firebird 

Перенесем, когда поймем, что для реализации требуется использовать специфику именно этих платформ smile


--------------------
Достоверно известно, что 89% людей доверяют статистике взятой с потолка smile
PM   Вверх
vladimir74
Дата 24.7.2009, 12:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 241
Регистрация: 28.11.2006

Репутация: нет
Всего: 3



Цитата(Zloxa @  24.7.2009,  10:36 Найти цитируемый пост)

Перенесем, когда поймем, что для реализации требуется использовать специфику именно этих платформ smile 

даже не знаю  smile 
но твой запрос не работает вылетает на 5 строке
Код

or count(distinct ad.bereit) = 2 and max(ad.bereit) = 'T' and min(ad.berit) = 'F'

--------------------
* В доме помешанного не говорят о миксере.* На любой Ваш вопрос у меня есть любой мой ответ.
PM MAIL   Вверх
Zloxa
Дата 24.7.2009, 12:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Чо?
****


Профиль
Группа: Завсегдатай
Сообщений: 3473
Регистрация: 12.9.2008

Репутация: 53
Всего: 161



Цитата(vladimir74 @  24.7.2009,  12:40 Найти цитируемый пост)
не работает

Очень информативно.
Может в FB кавычки по другому надо ставить?

Точно и детально опишите проблему


--------------------
Достоверно известно, что 89% людей доверяют статистике взятой с потолка smile
PM   Вверх
vladimir74
Дата 24.7.2009, 12:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 241
Регистрация: 28.11.2006

Репутация: нет
Всего: 3



Zloxa
спасибо!!! так получилось!
правда надо будет посмотреть как такой монстр будет работать с большим колличеством данных....
но это уже другой разговор.
Кстати а сразу update реально сделать в таком варианте или нет?

Добавлено через 12 минут и 55 секунд
Цитата(Zloxa @  24.7.2009,  10:48 Найти цитируемый пост)
Очень информативно.
Может в FB кавычки по другому надо ставить?

я сначала пробовал с твоим первым запросом, он выдал invalid token если честно я там сам не понял к чему относился or
второй вариант работает.... и анализ запроса показывает что все великолепно...
к сожалению нет подходящей базы с большим колличеством данных (у тех для кого я это делаю менее тысячи записей :( )
но в принципе эт не критично ....
в любом случае еще раз спасибо !!!
--------------------
* В доме помешанного не говорят о миксере.* На любой Ваш вопрос у меня есть любой мой ответ.
PM MAIL   Вверх
Zloxa
Дата 24.7.2009, 13:18 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Чо?
****


Профиль
Группа: Завсегдатай
Сообщений: 3473
Регистрация: 12.9.2008

Репутация: 53
Всего: 161



Цитата(vladimir74 @  24.7.2009,  12:52 Найти цитируемый пост)
Кстати а сразу update реально сделать в таком варианте или нет?


Цитата(vladimir74 @  24.7.2009,  12:08 Найти цитируемый пост)
теперь мне надо в таблице pa.bereit поставить T для всех pa.id если в таблице ad.posid все pa.bereit = T иначе F
потом тоже самое c а.bereit

елси я правильно понял, в чем я не уверен.
Код

update pa
  set berit = (select case when count(distinct berit) = 1 and max(berid) = 'T' then 'T' else 'F' end 
                 from ad where ad.pa_id = pa.id);

update a
  set berit = (select case when count(distinct berit) = 1 and max(berid) = 'T' then 'T' else 'F' end 
                 from pa where a.id = pa.a_id);



Это сообщение отредактировал(а) Zloxa - 24.7.2009, 13:19


--------------------
Достоверно известно, что 89% людей доверяют статистике взятой с потолка smile
PM   Вверх
vladimir74
Дата 24.7.2009, 13:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 241
Регистрация: 28.11.2006

Репутация: нет
Всего: 3



Цитата(Zloxa @  24.7.2009,  11:18 Найти цитируемый пост)
елси я правильно понял, в чем я не уверен.

мой поклон, огромное спасибо...
--------------------
* В доме помешанного не говорят о миксере.* На любой Ваш вопрос у меня есть любой мой ответ.
PM MAIL   Вверх
vladimir74
Дата 24.7.2009, 14:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 241
Регистрация: 28.11.2006

Репутация: нет
Всего: 3



немного изменил, чтоб считалось только для тех значений где a.erstellt = 'F' 
но это мелочи, благодоря тебе остаток задачи решил за два часа, теперь можно спокойно готовится в выходным!!!!
вобщем вопрос решен!!!
--------------------
* В доме помешанного не говорят о миксере.* На любой Ваш вопрос у меня есть любой мой ответ.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Составление SQL-запросов | Следующая тема »


 




[ Время генерации скрипта: 0.0826 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.