|
Помогите составить запрос
|
|||
---|---|---|---|
#18+
Здравствуйте! Помогите составить запрос Таблица: pidattr_idvalue52 12 t152 13 t252 25 t352 26 t453 12 t1153 13 t1253 25 t1353 26 t454 12 t1154 13 t254 25 t1354 26 t4 задача: выбрать только те pid у которых (attr_id=13 и value=t2) и (attr_id=26 и value=t4), т.е. в выборку должны попасть pid 52 и 54 ... |
|||
:
Нравится:
Не нравится:
|
|||
25.04.2019, 06:19 |
|
Помогите составить запрос
|
|||
---|---|---|---|
#18+
drunken_ikarus, про реляционное деление читайте... если коротко и в двух словах, то самая простая и интуитивно понятная реализация - на группировке (GRUOP BY) с постфильтрацией (HAVING) ... |
|||
:
Нравится:
Не нравится:
|
|||
25.04.2019, 07:11 |
|
Помогите составить запрос
|
|||
---|---|---|---|
#18+
982183, там не так всё просто, как кажется на первый взгляд... ... |
|||
:
Нравится:
Не нравится:
|
|||
25.04.2019, 07:12 |
|
Помогите составить запрос
|
|||
---|---|---|---|
#18+
drunken_ikarusвыбрать только те pid у которых (attr_id=13 и value=t2) и (attr_id=26 и value=t4), т.е. в выборку должны попасть pid 52 и 54 (attr_id=13 и value=t2) ИЛИ (attr_id=26 и value=t4) ... |
|||
:
Нравится:
Не нравится:
|
|||
25.04.2019, 07:12 |
|
Помогите составить запрос
|
|||
---|---|---|---|
#18+
Щукина Анна, В условии задачи не указано - нужны ему уникальные значения, или все строки с необходимыми условиями. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.04.2019, 07:14 |
|
Помогите составить запрос
|
|||
---|---|---|---|
#18+
Какой результат нужен? pidattr_idvalue52 12 t152 13 t252 25 t352 26 t454 12 t1154 13 t254 25 t1354 26 t4 pidattr_idvalue52 13 t252 26 t454 13 t254 26 t4 pid5254 ... |
|||
:
Нравится:
Не нравится:
|
|||
25.04.2019, 07:17 |
|
Помогите составить запрос
|
|||
---|---|---|---|
#18+
drunken_ikarusвыбрать только те pid у которых (attr_id=13 и value=t2) и (attr_id=26 и value=t4) Если пар всегда две, то лучше использовать тривиальное решение с 2 копиями таблицы. В первой отбор по первому условию, во втором по второму, и inner join по pid. Если количество пар динамическое - лучше использовать запрос с отбором по условиям (объединяемым через ИЛИ), группировкой по pid и проверкой количества уникальных attr_id. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.04.2019, 07:39 |
|
Помогите составить запрос
|
|||
---|---|---|---|
#18+
Гениальная формулировка. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.04.2019, 11:00 |
|
Помогите составить запрос
|
|||
---|---|---|---|
#18+
смысл в том что у продукта (pid) есть атрибут и его значение, надо найти продукты (pid) у которых есть все нужные нам атрибуты с одинаковым значение соответственно т.е. поиске атрибута 13 = t2 и атрибута 26 = t4 мы должны получить товары 52 и 54, но не 53 (потому что у него атрибут 13 имеет значение t12 хоть и атрибут 26 имеет t4) pid attr_id value52 12 t152 13 t252 25 t352 26 t453 12 t1153 13 t1253 25 t1353 26 t454 12 t1154 13 t254 25 t1354 26 t4 982183, при запросе (attr_id=13 и value=t2) ИЛИ (attr_id=26 и value=t4) мы получим 52,53,54 ... |
|||
:
Нравится:
Не нравится:
|
|||
25.04.2019, 11:14 |
|
Помогите составить запрос
|
|||
---|---|---|---|
#18+
Akinadrunken_ikarusвыбрать только те pid у которых (attr_id=13 и value=t2) и (attr_id=26 и value=t4) Если пар всегда две, то лучше использовать тривиальное решение с 2 копиями таблицы. В первой отбор по первому условию, во втором по второму, и inner join по pid. Если количество пар динамическое - лучше использовать запрос с отбором по условиям (объединяемым через ИЛИ), группировкой по pid и проверкой количества уникальных attr_id. количество пар динамическое, не очень понял про проверку количества уникальных attr_id ... |
|||
:
Нравится:
Не нравится:
|
|||
25.04.2019, 11:20 |
|
Помогите составить запрос
|
|||
---|---|---|---|
#18+
drunken_ikarusпри запросе (attr_id=13 и value=t2) ИЛИ (attr_id=26 и value=t4) мы получим 52,53,54HAVING отбросит 53. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.04.2019, 11:21 |
|
Помогите составить запрос
|
|||
---|---|---|---|
#18+
drunken_ikarusне очень понял про проверку количества уникальных attr_id Код: sql 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
25.04.2019, 11:21 |
|
Помогите составить запрос
|
|||
---|---|---|---|
#18+
Ибо могут быть повторы по строкам удовлетворяющих условиям. (Что не ИЛИ понял. Не сразу врубился в коечную задачу) ... |
|||
:
Нравится:
Не нравится:
|
|||
25.04.2019, 11:30 |
|
|
start [/forum/topic.php?fid=47&fpage=36&tid=1829175]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
49ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
50ms |
get tp. blocked users: |
1ms |
others: | 346ms |
total: | 489ms |
0 / 0 |