|
join?
|
|||
---|---|---|---|
#18+
Помогите, пожалуйста. Возможно, это слишком просто, но я не могу придумать. Упрощенный вариант. Есть 3 таблицы. Таблица A SIDName1Маша2Даша3Настя Таблица B SIDPIDPRICE11100122001330021100222003250 Таблица C PIDDATE12014.06.1422015.06.1532016.06.13 Нужно получить Имя + Прайс. Но если цен несколько - выдавать самую "новую". Т.е. должно получиться: NamePriceМаша300Даша200Настя50 Есть идеи, люди добрые?) ... |
|||
:
Нравится:
Не нравится:
|
|||
14.06.2016, 14:13 |
|
join?
|
|||
---|---|---|---|
#18+
а свой вариант? (с) Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
14.06.2016, 14:15 |
|
join?
|
|||
---|---|---|---|
#18+
Мимопроходящий, Я думал в сторону: Код: plsql 1.
Но ясно, что он выдает все варианты. Код: plsql 1.
Этот вариант выдает совсем не то, я даже понял почему.... ... |
|||
:
Нравится:
Не нравится:
|
|||
14.06.2016, 14:20 |
|
join?
|
|||
---|---|---|---|
#18+
volframЕсть идеи, люди добрые?) Задача учебная или продакшен? Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
14.06.2016, 14:23 |
|
join?
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov, Вообще - что-то среднее. Firebird в глаза вижу раз третий. Поэтому можно считать учебная. Но на реальной задачи, в духе - "помоги подправить у нас тут все горит, тыжпрограммист"... ... |
|||
:
Нравится:
Не нравится:
|
|||
14.06.2016, 14:29 |
|
join?
|
|||
---|---|---|---|
#18+
Для учебной задачи можно обойтись джоином и first_value(). Для нагруженного продакшена стоит подумать о хранимых агрегатах. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
14.06.2016, 14:32 |
|
join?
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov, Не, если в этом разрезе, то учебная :-) Им выгрузить надо и забыть. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.06.2016, 14:33 |
|
join?
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov, Function unknown\n- FIRST_VALUE' Не знает такую функцию... ... |
|||
:
Нравится:
Не нравится:
|
|||
14.06.2016, 14:40 |
|
join?
|
|||
---|---|---|---|
#18+
volfram Нужно получить Имя + Прайс. Но если цен несколько - выдавать самую "новую". Т.е. должно получиться: NamePriceМаша300Даша200Настя50 БД проституток? а если серьёзно Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13.
но вариант не очень-то шустрый ... |
|||
:
Нравится:
Не нравится:
|
|||
14.06.2016, 14:40 |
|
join?
|
|||
---|---|---|---|
#18+
Симонов Денис, Спасибо большое, сейчас проверю. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.06.2016, 14:44 |
|
join?
|
|||
---|---|---|---|
#18+
volfram, ты бы версию сказал. Раз ничего не сказал, то по умолчанию я считаю что Firebird 3.0. На 2.5 это работать не будет. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.06.2016, 14:49 |
|
join?
|
|||
---|---|---|---|
#18+
Кажется, как-то так: Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
... |
|||
:
Нравится:
Не нравится:
|
|||
14.06.2016, 14:56 |
|
join?
|
|||
---|---|---|---|
#18+
Симонов Денис, Блин, моя вина) Прошу прощения. Да, версия 2.5... И он ругается на PARTITION ... |
|||
:
Нравится:
Не нравится:
|
|||
14.06.2016, 15:04 |
|
join?
|
|||
---|---|---|---|
#18+
volfram, вариант rdb_dev должен работать. А вообще очень странно почему даты хранятся отдельно от прайса. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.06.2016, 15:07 |
|
join?
|
|||
---|---|---|---|
#18+
rdb_dev, Спасибо за то, что не прошли мимо! Я проверил, но он выдает всё, что есть в базе. Но уже упорядочено. Т.е. что-то типо: NamePriceМаша300Маша200Маша100Даша200Даша100Настя50 ... |
|||
:
Нравится:
Не нравится:
|
|||
14.06.2016, 15:25 |
|
join?
|
|||
---|---|---|---|
#18+
И да, если я правильно понял, то фильтр (какой филиал использовать, как у меня в примере) надо добавлять в формировании таблицы D? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.06.2016, 15:27 |
|
join?
|
|||
---|---|---|---|
#18+
Симонов Денис, Там вообще все странно хранится....Я несколько часов убил на то, чтобы понять логику :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
14.06.2016, 15:28 |
|
join?
|
|||
---|---|---|---|
#18+
volfram, чтобы понять логику, надо, всего лишь, не "плавать" в реляционных СУБД (RDBMS - Relational Database Management System). Для начала, посмотри перевод слова "relation", а потом залезь на вики https://ru.wikipedia.org/wiki/Нормальная_форма ... |
|||
:
Нравится:
Не нравится:
|
|||
14.06.2016, 15:39 |
|
join?
|
|||
---|---|---|---|
#18+
Вот так будет работать и даже без C, но только если в B самые большие PID соответствуют самым свежим ценам Код: sql 1. 2. 3. 4.
... |
|||
:
Нравится:
Не нравится:
|
|||
14.06.2016, 15:50 |
|
join?
|
|||
---|---|---|---|
#18+
rdb_devКажется, как-то так: Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
Это точно не работает. Все дело в том, что таблица D получается без уникального ключа PID. Если бы туда добавить PID и джоинить по нему, наверное, получится. Как это сделать - не знаю. Если добавляю, как обычно - в GRUP BY дописываю B.PID и в SELECT его добваляю, то ошибка not contained in either an aggregate function or the GROUP BY clause ... |
|||
:
Нравится:
Не нравится:
|
|||
14.06.2016, 16:56 |
|
join?
|
|||
---|---|---|---|
#18+
stelvic, Запрос вообще завис, пока не разбирался почему. Просто без даты, как-то страшно так вслепую использовать. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.06.2016, 16:58 |
|
join?
|
|||
---|---|---|---|
#18+
Код: sql 1. 2. 3. 4. 5. 6.
... |
|||
:
Нравится:
Не нравится:
|
|||
14.06.2016, 17:07 |
|
join?
|
|||
---|---|---|---|
#18+
rstrelba Код: sql 1. 2. 3. 4. 5. 6.
Я так и думал, что это не так сложно! Спасибо большое :-) Все работает! ... |
|||
:
Нравится:
Не нравится:
|
|||
14.06.2016, 17:27 |
|
join?
|
|||
---|---|---|---|
#18+
volframstelvic, Запрос вообще завис, пока не разбирался почему. Просто без даты, как-то страшно так вслепую использовать. Ну, видимо потому, что таблицы другие. Или они огромные и без индексов. На том примере таблиц, что ты привел это работает. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.06.2016, 08:16 |
|
join?
|
|||
---|---|---|---|
#18+
volframЭто точно не работает.Пробовал? volframВсе дело в том, что таблица D получается без уникального ключа PID.Вместо PID таблица D содержит записи с уникальными значениями идентификатора пользователя и датой последней цены для этого идентификатора, что является эквивалентом PID. Приоритет формы над содержанием. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.06.2016, 09:23 |
|
|
start [/forum/topic.php?fid=40&msg=39255741&tid=1562134]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
44ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
57ms |
get tp. blocked users: |
1ms |
others: | 15ms |
total: | 162ms |
0 / 0 |