2014-01-09 2 views
0

Я пытаюсь понять, как писать инструкции SQL, которые могут возвращать связанные строки данных из одной таблицы.SQL-запрос для связанных строк данных из одной таблицы

В качестве примера, я со следующей таблицей называется закупки:

------------------------------ 
|ID | Customer | Date | Cost | 
------------------------------ 
1 | 1  | Mon | 20.0 
2 | 1  | Tue | 10.0 
3 | 1  | Sat | 23.0 
4 | 2  | Thu | 211.0 
5 | 2  | Mon | 24.0 
6 | 2  | Sat | 50.0 
7 | 3  | Mon | 34.0 
8 | 3  | Sat | 200.0 
9 | 3  | Fri | 90.0 

Я хочу, чтобы данные о том, как много каждый клиент провел в субботу и соответствующие данные за сколько они потратили в понедельник, так что Я бы назвал следующие данные:

Saturday: [23.0,50.0,200.0] 
Monday: [20.0,24,0,34.0] 

Как это сделать? Я могу сделать:

SELECT cost FROM purchases WHERE Date=='Sat' и SELECT cost FROM purchases WHERE Date=='Mon', но это не кажется очень удовлетворительным, потому что это зависит от того, в какой базе данных дает результат, и покупка может не произойти как в субботу, так и в понедельник.

Я исследовал Объединения и союзы для этой цели, но они, похоже, связаны с данными из более чем одной таблицы.

Я уверен, что есть стандартный способ решить эту проблему.

+0

Что вы подразумеваете под «коррелировать сколько» –

+0

Спасибо за комментарий, я попытался прояснить это в вопросе. –

+0

Что делать, если клиент ничего не потратил ни на один из этих двух дней? –

ответ

2

Вы можете присоединиться к таблице для себя; это даст вам данные, которые вы хотите, но в формате

UserID, AmountSpentSat, AmountSpentMon 

SQL-:

select p1.Customer, p1.cost as AmountMon, p2.cost as AmountSat 
from purchases p1, purchases p2 
where p1.customer = p2.customer 
and p1.date = "Mon" 
and p2.date = "Sat" 

Вот рабочий sqlfiddle его: http://sqlfiddle.com/#!2/367ef/1

Примечание я добавил новый клиент (4) кто только покупает в СБ, и он работает правильно.

+0

Благодарим вас за то, что SQLFiddle - вещь! Отличный ресурс! – DopeGhoti

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