|
|
|
Помогите сделать выборку из БД
|
|||
|---|---|---|---|
|
#18+
Здравствуйте уважаемые форумчане, первый раз пишу на форму, так что не обессудте. Суть проблемы такова. Есть таблица товаров в которую ИМХО рукожопый 1с-к непойми как выгружает товары. Так вот у одного товара может быть несколько вариантов в бд для таких случаев предусмотрена специальная таблица(variants) в которой по ид товара ему прописываются варианты, но этот 1ск выгружает все товары скопом в основную таблицу товаров(products) и определить что все это варианты одного товара можно только при помощи поля(external_id, у одинаковых товаров он тоже одинаковый) и вот собственно вопрос мне сначала нужно было просто вывести всего один из вариантов товара на странице я это реализовал через запрос, просто указав GROUP BY external_id, но теперь стала задаче сделать так, есть 1 товар который называется Модель 102 Орех ПГ550x1900мм у него есть собственно те самые варианты, к примеру Модель 102 Орех ПО550x1900мм, Модель 102 Орех ПГ650x1900мм, Модель 102 Орех ПГ850x1900мм и Модель 102 Орех ПО650x1900мм, у всех этих товаров external_id один и тот же. Мне нужно сделать запрос который бы в результате из этих 5 товаров вернул бы только 2 один у которого в названии встречается ПО и другой у которого ПГ встречается. Т.е нужно сгруппировать товары при этом учитывая встречается ли в имени ПГ и ПО. Надеюсь более-менее понятно изложил проблему. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.05.2015, 17:51:44 |
|
||
|
Помогите сделать выборку из БД
|
|||
|---|---|---|---|
|
#18+
ФАК раздела рассказывает, как вернуть первую запись в некоей группе. У тебя группы - по external_id. Составляешь запрос, который вернёт по 1 записи для каждого external_id с отбором по присутствию подстроки "ПГ". Второй - аналогичный, но с подстрокой "ПО". И затем UNION ALL этих запросов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.05.2015, 17:59:48 |
|
||
|
Помогите сделать выборку из БД
|
|||
|---|---|---|---|
|
#18+
И как должен выглядеть результат на таких исходных данных? Желательно показать в табличном виде, а не художественным текстом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.05.2015, 18:00:39 |
|
||
|
Помогите сделать выборку из БД
|
|||
|---|---|---|---|
|
#18+
miksoft, idnameexternal_id1Модель 102 Орех ПО900x2000мм Карельские двери2a379074-8c8d-11e3-a388-001fc6ea9c8d2Модель 102 Орех ПО700x2000мм Карельские двери2a379074-8c8d-11e3-a388-001fc6ea9c8d3Модель 102 Орех ПГ900x2000мм Карельские двери2a379074-8c8d-11e3-a388-001fc6ea9c8d4Модель 102 Орех ПГ600x2000мм Карельские двери2a379074-8c8d-11e3-a388-001fc6ea9c8d5Модель 102 Орех ПО600x2000мм Карельские двери2a379074-8c8d-11e3-a388-001fc6ea9c8d Вот к примеру из этой таблице нужно получить 2 товара, один у которого ПГ в имени а другой у которого ПО а остальные сгруппировать ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.05.2015, 18:14:09 |
|
||
|
Помогите сделать выборку из БД
|
|||
|---|---|---|---|
|
#18+
навскидку Код: sql 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.05.2015, 18:14:52 |
|
||
|
Помогите сделать выборку из БД
|
|||
|---|---|---|---|
|
#18+
satanicmanа остальные сгруппироватьЯ этого не понимаю. Поэтому и прошу показать конкретный желаемый результат. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.05.2015, 18:17:31 |
|
||
|
Помогите сделать выборку из БД
|
|||
|---|---|---|---|
|
#18+
lamer yuga , мимо. Так он получит 2 записи с ПГ и ни одной с ПО... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.05.2015, 18:22:05 |
|
||
|
Помогите сделать выборку из БД
|
|||
|---|---|---|---|
|
#18+
miksoft, id name external_id1 Модель 102 Орех ПО900x2000мм Карельские двери 2a379074-8c8d-11e3-a388-001fc6ea9c8d2 Модель 102 Орех ПО700x2000мм Карельские двери 2a379074-8c8d-11e3-a388-001fc6ea9c8d3 Модель 102 Орех ПГ900x2000мм Карельские двери 2a379074-8c8d-11e3-a388-001fc6ea9c8d4 Модель 102 Орех ПГ600x2000мм Карельские двери 2a379074-8c8d-11e3-a388-001fc6ea9c8d5 Модель 102 Орех ПО600x2000мм Карельские двери 2a379074-8c8d-11e3-a388-001fc6ea9c8d В результате запрос должен выдать 2 товара, к примеру Модель 102 Орех ПО900x2000мм Карельские двери и Модель 102 Орех ПГ900x2000мм Карельские двери ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.05.2015, 18:23:14 |
|
||
|
Помогите сделать выборку из БД
|
|||
|---|---|---|---|
|
#18+
Akina lamer yuga , мимо. Так он получит 2 записи с ПГ и ни одной с ПО...Почему? Вроде по штучке каждого должно получиться. А вот неких "остальных" не будет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.05.2015, 18:24:17 |
|
||
|
Помогите сделать выборку из БД
|
|||
|---|---|---|---|
|
#18+
satanicmanmiksoft, id name external_id1 Модель 102 Орех ПО900x2000мм Карельские двери 2a379074-8c8d-11e3-a388-001fc6ea9c8d2 Модель 102 Орех ПО700x2000мм Карельские двери 2a379074-8c8d-11e3-a388-001fc6ea9c8d3 Модель 102 Орех ПГ900x2000мм Карельские двери 2a379074-8c8d-11e3-a388-001fc6ea9c8d4 Модель 102 Орех ПГ600x2000мм Карельские двери 2a379074-8c8d-11e3-a388-001fc6ea9c8d5 Модель 102 Орех ПО600x2000мм Карельские двери 2a379074-8c8d-11e3-a388-001fc6ea9c8d В результате запрос должен выдать 2 товара, к примеру Модель 102 Орех ПО900x2000мм Карельские двери и Модель 102 Орех ПГ900x2000мм Карельские двериКак я понимаю, все равно, какая именно запись с "ПГ" и какая именно запись с "ПО" будет в результате? А кто такие "остальные" ? Без учета этих "остальных" будет примерно как предложил lamer yuga: Код: sql 1. 2. 3. 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.05.2015, 18:27:40 |
|
||
|
Помогите сделать выборку из БД
|
|||
|---|---|---|---|
|
#18+
miksoft Код: sql 1. Так - да. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.05.2015, 18:32:01 |
|
||
|
Помогите сделать выборку из БД
|
|||
|---|---|---|---|
|
#18+
Akinamiksoft Код: sql 1. Так - да.Это только для детерминированности результата и соответствия синтаксису SQL. На "Так он получит 2 записи с ПГ и ни одной с ПО" это никак не влияет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.05.2015, 18:35:47 |
|
||
|
Помогите сделать выборку из БД
|
|||
|---|---|---|---|
|
#18+
Благодарю всех за помощь, особенно miksoft и lamer yuga ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.05.2015, 18:40:17 |
|
||
|
Помогите сделать выборку из БД
|
|||
|---|---|---|---|
|
#18+
satanicmanБлагодарю всех за помощьПодождите, мы еще не закончили :) А что должно происходить с записями у которых нет этих подстрок или есть они обе? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.05.2015, 18:42:36 |
|
||
|
Помогите сделать выборку из БД
|
|||
|---|---|---|---|
|
#18+
Akinamiksoft Код: sql 1. Так - да.Я, конечно, не безгрешен, однако и MIN здесь абсолютно ни при чем. Ну не требует MySQL аггрегатных функций для полей, не перечисленных в GROUP BY(если не указать запрет явно) - так что что MIN, что не MIN - все равно другие поля с этим значением коррелировать не обязаны А вот список GROUP BY, напротив, задает разделение строк на группы со значениями 1 или 2 для каждого ID, что и возжелалось ТСу Так что, извините, но мимо как раз ваше замечание ;-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.05.2015, 20:40:52 |
|
||
|
Помогите сделать выборку из БД
|
|||
|---|---|---|---|
|
#18+
Или группы 0/1 - в варианте mikesoft, сути не меняет ;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.05.2015, 20:45:28 |
|
||
|
Помогите сделать выборку из БД
|
|||
|---|---|---|---|
|
#18+
miksoft Код: sql 1. 2. 3. 4. я бы немного расширил: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.05.2015, 21:10:52 |
|
||
|
|

start [/forum/topic.php?fid=47&msg=38966678&tid=1833175]: |
0ms |
get settings: |
7ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
51ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
49ms |
get tp. blocked users: |
1ms |
| others: | 224ms |
| total: | 362ms |

| 0 / 0 |
