2016-02-11 3 views
0

У меня есть четыре таблицы:Выберите из таблицы, где состояние в другой таблице

SELLER (ID, NAME) 
CLIENT (ID, NAME) 
SELLER_CLIENT (SELLER_ID, CLIENT_ID) 
CLIENT_SOLD (CLIENT_ID, VALUE, DATE) 

Мне нужно написать запрос, чтобы выбрать все продавцы, которые клиенты купили более, что 500 (стоимость) в выбранную дату. Может ли кто-нибудь дать мне небольшой совет, как я могу это сделать или что использовать?

Мои базовые знания в том, что мне нужно использовать

SELECT * FROM SELLER WHERE... 

РЕДАКТИРОВАНИЕ Пример ПРОДАВЕЦ ТАБЛИЦА

ID | NAME 
1 | s1 
2 | s2 
3 | s3 
4 | s4 
5 | s5 
6 | s6 

КЛИЕНТА ТАБЛИЦА

ID | NAME 
1 | k1 
2 | k2 
3 | k3 
4 | k4 
5 | k5 
6 | k6 

CLIENT_SELLER ТАБЛИЦА

CLIENT_ID | SELLER_ID 
1   | 2 
2   | 3 
3   | 3 
4   | 1 
5   | 6 
6   | 6 

CLIENT_SOLD

CLIENT_ID | VALUE | DATE 
1 | 600 | 13.04.2015 
2 | 360 | 22.02.2015 
3 | 501 | 11.06.2015 
4 | 800 | 09.01.2015 
5 | 112 | 12.02.2015 
6 | 98 | 08.02.2015 

И все время запрос должен вернуть мне продавец с идентификатором 2, 3, 1

+0

Как вообще "SELLER_CLIENT"? –

+0

Он рассказывает, какие клиенты связаны с продавцами, например. у продавца s1 есть клиенты c1, c5 ... надеюсь, что это немного поможет – Patryk

+0

в таблице CLIENT_SOLD, вы не можете отличить, какой клиент (из этого продавца_ид) является той записью, на которую ссылается? Я прав? –

ответ

0

Попробуйте следующее:

SELECT s.id,s.name FROM CLIENT_SOLD cs 
INNER JOIN SELLER_CLIENT sc 
ON cs.CLIENT_ID=sc.CLIENT_ID 
INNER JOIN SELLER s 
ON s.ID=sc.SELLER_ID 
WHERE cs.VALUE>500 
AND [email protected] 
+1

Где я могу определить c (client?) Здесь? – Patryk

+0

@Patryk Почему вам даже нужны детали клиента? Вам нужны имена продавцов, которые проданы за ценность более 500 в определенный день, ryt? –

+0

Кроме того, какой диалект SQL это, где вы можете так агрегатизировать? –

1

Простых коррелированные подзапросы просуммировать значение должны сделать работу:

SELECT s.* FROM SELLER s 
WHERE (SELECT SUM(Value) 
     FROM CLIENT_SOLD cs 
     WHERE cs.SELLER_ID = s.ID 
      AND cs.DATE = @date) > 500 
+0

Хм, он возвращает мне ПРОДАВЕЦ с идентификаторами клиентов, которые купили больше, чем 500, и я хочу, чтобы продавцы, которым клиенты (не нужно использовать таблицу SELLER_CLIENT), купили более 500 (сумма). Спасибо за ответ, это мне очень помогло, и теперь я ближе к решению. – Patryk

Смежные вопросы