| BG Development · За реклама · За контакти |
Помощ Търсене Потребители Календар Правила |
| Здравей! ( Включване | Регистриране ) |
![]() ![]() ![]() |
| runtime |
Публикувано на: 02-03-2020, 08:40
|
||||
|
Име: Вальо Група: Потребител Ранг: Новопостъпил Мнения: 49 Регистриран на: 22.06.07 |
Здравейте, Мъча се да изкарам запис от базата базиран на дадено условие но нещо зациклих. Структурата е:
Условието е да се извади ID на първият запис ако is_first няма флаг 1 в нито един запис или ID на записа с флага. В конкретният случай трябва да ми върне ID=2. Ако няма нито един флаг да върне ID=1 Ако ни трябва ID на първия запис, то лесно с:
Пробвах с IF ELSE, CASE, ISNULL ама нещо удрям на греда, а съм сигурен, че проблема е в моята тиква. EDIT: Вариант ми е да ги сортирам по is_first и да лимитирам записа до 1-вия order by is_first desc limit 1 ама ми се иска да потърся друг вариант. Това мнение е било редактирано от runtime на 02-03-2020, 08:47 |
||||
| Gamma Goblin |
Публикувано на: 02-03-2020, 08:46
|
||
![]() Име: Група: Потребител Ранг: Почетен член Мнения: 4014 Регистриран на: 21.02.18 |
я разяснии какво питаш, защото това няма смисъл,
1. Каво означава "първи" запис. Записите в базата нямат подредба, така че понятия като първи, втори, последен нямат смисъл без да кажеш по какъв критерии трябва да се подредят 2. Какво означава "в нито един запис " ? 3. Какво означава " ID на записа с флага" ? |
||
| thrawn |
Публикувано на: 02-03-2020, 08:50
|
![]() Име: Група: Потребител Ранг: Почетен член Мнения: 3864 Регистриран на: 17.01.17 |
Сортираш в низходящ ред по is_first и по възходящ по id и взимаш първия запис. Друг е въпроса какво точно се опитваш да постигнеш.
|
| runtime |
Публикувано на: 02-03-2020, 08:54
|
|
Име: Вальо Група: Потребител Ранг: Новопостъпил Мнения: 49 Регистриран на: 22.06.07 |
да се извади ID на първият запис ако is_first няма флаг 1 в нито един запис или ID на записа с флага
ID - primary key Каво означава "първи" запис. Критерия на подрежданне е по is_first Какво означава "в нито един запис " ? във вички записи в колоната is_first да са с null стойности в които записите в колоната status са 100 и записите в колоната v_id са 11 Какво означава " ID на записа с флага" ? ID е колона с първичният ключ Извинявай ама, кое точно не се разбра? |
| Gamma Goblin |
Публикувано на: 02-03-2020, 09:17
|
||||||||
![]() Име: Група: Потребител Ранг: Почетен член Мнения: 4014 Регистриран на: 21.02.18 |
продължавам нищо да не разбирам
Какво правим ако има няколко записа с не-нулл стойности за ис_фирст ? Ако ис_фирст е 2,3,4,5,6 ? как подреждаме тогава ?
Това противоречи на което ми кзваш по-горе. ИД=2 има не нулл ис_фирст, така че не трябва да ти връща него
Това е ясно, аз питах какво означава " в нито един запис или ID на записа с флага" Това мнение е било редактирано от Gamma Goblin на 02-03-2020, 09:18 |
||||||||
| runtime |
Публикувано на: 02-03-2020, 09:37
|
|
Име: Вальо Група: Потребител Ранг: Новопостъпил Мнения: 49 Регистриран на: 22.06.07 |
Какво правим ако има няколко записа с не-нулл стойности за ис_фирст ? Ако ис_фирст е 2,3,4,5,6 ? как подреждаме тогава ?
Само един запи от колоната is_first има стойност 1, всички останали са null в нито един запис или ID на записа с флага Да изведа MIN(id) ако вички записи от колоната ис_фирст са NULL или ID-то на запиа в който в колоната ис_фирст има стойност 1. В конкретния случай в таблицата по-горе трябва да се върне ID=2 защото is_firs не е null в някой от записите. Ако във всички записи в колоната беше null то да върне ID=1 защото това е записа с най-малко ID или MIN(id) select id from logs where (status = 100 and v_id = 11) order by is_first desc limit 1 @thrawn - мерси и аз така го направих @Gamma Goblin заеби правя го със сортирането и лимитирането Това мнение е било редактирано от runtime на 02-03-2020, 09:37 |
![]() |
![]() ![]() ![]() |