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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Получить список магазинов и пройтись по ним 
:(
    Опции темы
neic
Дата 8.2.2011, 21:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Задание звучит так:

Есть таблицы:
R1
Акция |  Номинал

R2
Магазин | Акция | Цена

Задание:
Акции, которые продаются только одни фондовым магазином.

Вот есть код:
Код

SELECT R1.АКЦИЯ
FROM R1,R2
WHERE R1.АКЦИЯ NOT IN (SELECT R2.АКЦИЯ FROM R2 WHERE МАГАЗИН=(SELECT МАГАЗИН FROM R2 GROUP BY МАГАЗИН))
GROUP BY R1.АКЦИЯ



П.С. Решение найдено. =)

Это сообщение отредактировал(а) neic - 8.2.2011, 21:17
PM MAIL WWW ICQ Skype   Вверх
Zloxa
Дата 8.2.2011, 21:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Чо?
****


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

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



Цитата(neic @  8.2.2011,  21:08 Найти цитируемый пост)
Задание:
Акции, которые продаются только одни фондовым магазином.

Полохое задание, не понятное.
Цитата(neic @  8.2.2011,  21:08 Найти цитируемый пост)
Вот есть код:
Код

SELECT R1.АКЦИЯ
FROM R1,R2
WHERE R1.АКЦИЯ NOT IN (SELECT R2.АКЦИЯ FROM R2 WHERE МАГАЗИН=(SELECT МАГАЗИН FROM R2 GROUP BY МАГАЗИН))
GROUP BY R1.АКЦИЯ


Плохой код. Очень плохой. И не понятно даже что пытались им сказать.

Цитата(neic @  8.2.2011,  21:08 Найти цитируемый пост)
Решение найдено. =)

Отличная новость.  smile 


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


Опытный
**


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

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



Zloxa
Проверил код. Не рабочий =(

Код

SELECT R2.АКЦИЯ FROM R2 WHERE МАГАЗИН=(SELECT МАГАЗИН FROM R2 GROUP BY МАГАЗИН)

Выводит почему-то только акции 1ого магазина

Как тогда сделать запрос?


Это сообщение отредактировал(а) neic - 8.2.2011, 22:54
PM MAIL WWW ICQ Skype   Вверх
Akina
Дата 9.2.2011, 00:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


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

Репутация: 45
Всего: 454



Код

select АКЦИЯ 
from R2 
group by АКЦИЯ 
having Count(АКЦИЯ)=1
?


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
neic
Дата 9.2.2011, 00:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Akina
Спасибо =)

А еще вопрос, тоже просидел над этой задачей целый вечер:

Фондовый магазин, в котором все цены самые низкие

Сейчас продолжаю с ней разбираться.
PM MAIL WWW ICQ Skype   Вверх
Akina
Дата 9.2.2011, 00:37 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


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

Репутация: 45
Всего: 454



Цитата(neic @  9.2.2011,  01:31 Найти цитируемый пост)
Фондовый магазин, в котором все цены самые низкие

Скажите препу, что он придурок. Если есть две акции, в одном магазине первая по три рубля, а вторая по пять, а во втором магазине наоборот - то где, блин, цены самые низкие? Правильно, у торговки за углом.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
neic
Дата 9.2.2011, 00:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Akina
Сказать-то можно. Но я думаю лучше от этого мне не станет.

Допустим, чисто теоретически, что такой магазин есть, то какой запрос будет?
PM MAIL WWW ICQ Skype   Вверх
Akina
Дата 9.2.2011, 08:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


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

Репутация: 45
Всего: 454



Теории - на кухню. 
Строгое определение такого магазина в студию - тогда будет запрос.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Zloxa
Дата 9.2.2011, 09:49 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Чо?
****


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

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



Цитата(neic @  8.2.2011,  22:42 Найти цитируемый пост)
Выводит почему-то только акции 1ого магазина

Это баг, либо частный случай. В общем случае, должен выдавать ошибку

Akina, Телепатище!!! smile 
Цитата(neic @  9.2.2011,  00:31 Найти цитируемый пост)
Фондовый магазин, в котором все цены самые низкие

если понимать задачу буквально - выбрать магазин(ы), в котором(ых) нет ни одной акции, которая была бы дороже нежели в других магазинах:
Код

SQL> with r2 as (
  2              select 1 store, 1 stock, 1 cost from dual
  3    union all select 2 store, 1 stock, 2 cost from dual
  4    union all select 1 store, 2 stock, 1 cost from dual
  5    union all select 3 store, 2 stock, 2 cost from dual
  6  )
  7  select store
  8  from r2 t1
  9  having 0=sum((select count(*)
 10                 from r2 t2
 11                 where t1.store != t2.store
 12                   and t1.stock = t2.stock
 13                   and t1.cost >= t2.cost
 14              ))
 15  group by store
 16  ;
 
     STORE
----------
         1



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


Опытный
**


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

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



Zloxa
Такой вопрос, а откуда у нас t1 и t2 появились? Тем более у нас есть только 1 таблица, 2ой с ценами нет.
PM MAIL WWW ICQ Skype   Вверх
Zloxa
Дата 9.2.2011, 14:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Чо?
****


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

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



это не таблицы. это псевдонимы (алиасы) таблицы r2. Одна таблица дважды используется в запросе. Для того чтобы не возникало неоднозначности при обращении к полям таблицы, каждому упоминанию таблицы присваивается псевдоним, который испльзуется для доступа к ним.

Это сообщение отредактировал(а) Zloxa - 9.2.2011, 14:21


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


Опытный
**


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

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



А от куда взялась таблица dual?

П.С. Я правильно двигаюсь хоть?
Код

with R2 as 
(
    select 1 МАГАЗИН, 1 АКЦИЯ, 1 ЦЕНА from dual
    union all select 2 МАГАЗИН, 1 АКЦИЯ, 2 ЦЕНА from dual
    union all select 1 МАГАЗИН, 2 АКЦИЯ, 1 ЦЕНА from dual
    union all select 3 МАГАЗИН, 2 АКЦИЯ, 2 ЦЕНА from dual
)

select МАГАЗИН
from R2 t1
having 0=sum((select count(*)
               from r2 t2
               where t1.store != t2.store
                 and t1.stock = t2.stock
                 and t1.cost >= t2.cost
             ))
group by МАГАЗИН;

PM MAIL WWW ICQ Skype   Вверх
Zloxa
Дата 9.2.2011, 15:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Чо?
****


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

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



Цитата(neic @  9.2.2011,  15:31 Найти цитируемый пост)
А от куда взялась таблица dual?

вам она не нужна, она испльзуется исключительно для того, чтобы воспроизвести тесткейс.
все что вам нужно, начинается с "select" в седьмой (у вас - в девятой) строке

Это сообщение отредактировал(а) Zloxa - 9.2.2011, 15:38


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


Опытный
**


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

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



SQLite ругается:
Цитата

SQLite Error 1 - near "GROUP":syntax error


Сорь, что заранее не предупредил в какой БД работаю.

Это сообщение отредактировал(а) neic - 9.2.2011, 15:47
PM MAIL WWW ICQ Skype   Вверх
Zloxa
Дата 9.2.2011, 15:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Чо?
****


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

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



Цитата(neic @  9.2.2011,  15:44 Найти цитируемый пост)
SQLite 

вонагде туз то козырный прятался. smile 


--------------------
Достоверно известно, что 89% людей доверяют статистике взятой с потолка smile
PM   Вверх
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Составление SQL-запросов | Следующая тема »


 




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


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

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