|
Простая таблица, невозможный запрос
|
|||
---|---|---|---|
#18+
Доброго времени суток, столкнулся с интересной задачей, которую до сих пор не удалось решить Существует таблица: Код: sql 1. 2. 3. 4. 5. 6. 7.
Количество параметров cN - варьируется Необходимо извлечь те model_id, если при группировке их c[1..N] имеют значение m (например=12) Текущий запрос выглядит так: Код: sql 1. 2. 3. 4. 5.
Данный запрос отрабатывает правильно, в случае, когда только один `c` в строке совпадает с заданным числом, так как задача в том, чтобы извлечь модель, обладающую всем набором необходимых характеристик, т.е: ситуация: Код: sql 1. 2. 3. 4.
является невалидной, так как каждая строка должна отвечать только за один параметр, если первая строка отвечает за второй, а вторая за третий, то третья строка должна содержать третий параметр, вот валидные ситуации: Код: sql 1. 2. 3. 4.
или Код: sql 1. 2. 3. 4.
или Код: sql 1. 2. 3. 4.
Если не вполне понятно объяснил, спрашивайте, задача очень важная, надеюсь на вашу помошь ... |
|||
:
Нравится:
Не нравится:
|
|||
19.01.2019, 18:16 |
|
Простая таблица, невозможный запрос
|
|||
---|---|---|---|
#18+
Жека блин, 1) Что хранится в полях c1,c2, ... ? Всегда ли это числа 0 или 1 (а тогда зачем целых 4 байта на это?), или может быть что-то другое? 2) Что такое "параметр"? Такое ощущение, что в разных местах вашего поста это слово имеет разный смысл. 3) Почему первый пример является невалидным, а второй валидным? И там, и там в каждой записи есть хотя бы одна единица и в каждом поле есть хотя бы одна единица. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.01.2019, 19:30 |
|
Простая таблица, невозможный запрос
|
|||
---|---|---|---|
#18+
miksoft, 1) В полях c1,c2, ... хранится число большее нуля, не равное 1. В данном случае cN=12 ? 1: 0 2) Параметр это строка чекающая один из cN 3) Первый пример является невалидным, а второй валидным, потому что в первом первая строка чекает второй и третий параметр, и нет одельной строки для любого из них, а в других примерах для каждого параметра есть отдельная строка Спасибо за внимание к задаче ... |
|||
:
Нравится:
Не нравится:
|
|||
19.01.2019, 20:12 |
|
Простая таблица, невозможный запрос
|
|||
---|---|---|---|
#18+
Жека блинВ полях c1,c2, ... хранится число большее нуля, не равное 1Ну то есть больше 1 ? Жека блинВ данном случае cN=12 ? 1: 0Что это за запись? Если это тернарный оператор из C-подобных языков, то все равно непонято. В результате он дает 1, но в cN не может быть 1 по вашим же словам. Жека блинчекающая? Жека блинв других примерах для каждого параметра есть отдельная строкаво втором нет строки для c2, а в третьем нет строки для c3. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.01.2019, 21:48 |
|
Простая таблица, невозможный запрос
|
|||
---|---|---|---|
#18+
Запрос вполне возможен. И даже не сильно сложен. Но для 12 параметров он скорее всего уложит сервер. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.01.2019, 21:49 |
|
Простая таблица, невозможный запрос
|
|||
---|---|---|---|
#18+
AkinaЗапрос вполне возможен.Завидую такому хрустальному шару ... |
|||
:
Нравится:
Не нравится:
|
|||
19.01.2019, 21:54 |
|
Простая таблица, невозможный запрос
|
|||
---|---|---|---|
#18+
miksoft , да задача уже полностью понятна. Ему просто нужна матрица, имеющая хотя бы одну ненулевую диагональ. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.01.2019, 22:18 |
|
Простая таблица, невозможный запрос
|
|||
---|---|---|---|
#18+
AkinaЕму просто нужна матрица, имеющая хотя бы одну ненулевую диагональ.А если она не квадратная? ... |
|||
:
Нравится:
Не нравится:
|
|||
19.01.2019, 22:29 |
|
Простая таблица, невозможный запрос
|
|||
---|---|---|---|
#18+
miksoft, да, это я тернарным оператором обозначил, проверку на то, что поле равно или не равно искомому числу, для простоты можно обозначить 1 или 0, в зависимости от совпадения. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.01.2019, 09:15 |
|
Простая таблица, невозможный запрос
|
|||
---|---|---|---|
#18+
Akina, можете пожалуйста озвучить возможную версию запроса ... |
|||
:
Нравится:
Не нравится:
|
|||
20.01.2019, 09:30 |
|
Простая таблица, невозможный запрос
|
|||
---|---|---|---|
#18+
Akina miksoft , да задача уже полностью понятна. Ему просто нужна матрица, имеющая хотя бы одну ненулевую диагональ. скорее не "ненулевую", а "единичную", причем матрица может быть не квадратной, то-есть строк может быть больше чем столбцов, если строк меньше то уже неподходящий случай. Только вот не факт что нужные единицы выстроятся именно в диагональ, а например не так: Код: sql 1. 2. 3. 4. 5.
так как данный случай тоже валидный, порядок cN не влияет ... |
|||
:
Нравится:
Не нравится:
|
|||
20.01.2019, 14:57 |
|
Простая таблица, невозможный запрос
|
|||
---|---|---|---|
#18+
Жека блинТолько вот не факт что нужные единицы выстроятся именно в диагональ, а например не так:Это всего лишь вопрос сортировки записей. Отсортируйте сразу по всем этим полям в обратном порядке. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.01.2019, 00:08 |
|
Простая таблица, невозможный запрос
|
|||
---|---|---|---|
#18+
Запрос "влоб". Код: sql 1. 2. 3. 4.
Для случая, когда записей больше, чем полей - достаточно получить записей столько, сколько полей, и добавить недостающее количество любых записей. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.01.2019, 08:15 |
|
|
start [/forum/topic.php?fid=47&fpage=41&tid=1829356]: |
0ms |
get settings: |
11ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
44ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
70ms |
get tp. blocked users: |
2ms |
others: | 13ms |
total: | 176ms |
0 / 0 |