|
Выборка из одной таблицы в два запроса
|
|||
---|---|---|---|
#18+
Здравствуйте! есть табличка test name text petr AS-45 petr AS-44 petr As-48 saha As-50 conya AS-54 cola AS-87 cola As-88 cola As-89 нужно вывести name As AS petr 1 1 saha 1 0 conya 0 1 cola 1 1 как я только не крутил, не получается максимум что получается name As AS petr 0 1 petr 1 0 saha 1 0 conya 0 1 cola 0 1 cola 1 0 Заранее спасибо! ... |
|||
:
Нравится:
Не нравится:
|
|||
29.01.2019, 13:37 |
|
Выборка из одной таблицы в два запроса
|
|||
---|---|---|---|
#18+
21Petro21как я только не крутилА как? 21Petro21максимум что получаетсяЕсли уж совсем тупо, то пропустить этот набор строк через группировку по name, а столбцы через агрегирующую функцию MAX(). ... |
|||
:
Нравится:
Не нравится:
|
|||
29.01.2019, 13:45 |
|
Выборка из одной таблицы в два запроса
|
|||
---|---|---|---|
#18+
Вот как пробовал. select M1.NameManager, M1.CompanyNameAlt, M1.cnt1 as f1, M2.cnt1 as f2 From (select NameManager, CompanyNameAlt, count(*) as cnt1 from Manager, Firm, ListRn where Manager.Id = Firm.ManagerId and Firm.Id = ListRn.FirmId and Rn LIKE 'Аро%' and CompanyNameAlt = CompanyNameAlt group by NameManager, CompanyNameAlt ) M1, (select NameManager, CompanyNameAlt, count(*) as cnt1 from Manager, Firm, ListRn where Manager.Id = Firm.ManagerId and Firm.Id = ListRn.FirmId and Rn LIKE 'АРО%' and CompanyNameAlt = CompanyNameAlt group by NameManager, CompanyNameAlt ) M2 where M1.NameManager = M2.NameManager and M1.CompanyNameAlt = M2.CompanyNameAlt Но в таком случае я не вижу строки типа (из примера выше) name As AS saha 1 0 ... |
|||
:
Нравится:
Не нравится:
|
|||
29.01.2019, 13:49 |
|
Выборка из одной таблицы в два запроса
|
|||
---|---|---|---|
#18+
Код: sql 1. 2. 3.
Однако совпадающие с точностью до регистра имена полей - это грабли... обратиться к нужному полю получится только позиционно, по имени не выйдет. И Collation поля text обязан быть регистрочувствительным - если не так, надо явно включить регистрозависимость оператора сравнения. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.01.2019, 15:15 |
|
Выборка из одной таблицы в два запроса
|
|||
---|---|---|---|
#18+
Akina, спасибо огромное! Но остался вопрос, почему с "count(text LIKE 'As%')" не работает. вернее работает, но выводит одинаковые данные в оба столбца? BINARY использовал для получения 1 и 0 (есть или нет). Сумма мне тоже пойдет, применю if (x > 0, '1', '0') ... |
|||
:
Нравится:
Не нравится:
|
|||
29.01.2019, 15:35 |
|
Выборка из одной таблицы в два запроса
|
|||
---|---|---|---|
#18+
С чувствительностью к регистру можно так даже на Collation *ci* Код: sql 1. 2. 3. 4. 5. 6.
... |
|||
:
Нравится:
Не нравится:
|
|||
29.01.2019, 15:37 |
|
Выборка из одной таблицы в два запроса
|
|||
---|---|---|---|
#18+
Однако, именовать выводимые поля одинаково (в регистронезависимом контексте) `As` и `AS` не самое лучшее решение. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.01.2019, 15:41 |
|
Выборка из одной таблицы в два запроса
|
|||
---|---|---|---|
#18+
21Petro21почему с "count(text LIKE 'As%')" не работает. вернее работает, но выводит одинаковые данные в оба столбца?Читать Operator LIKE до полного вразумления. Особое внимание - слову COLLATE . ... |
|||
:
Нравится:
Не нравится:
|
|||
29.01.2019, 15:51 |
|
|
start [/forum/topic.php?fid=47&msg=39766514&tid=1829338]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
47ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
40ms |
get tp. blocked users: |
1ms |
others: | 16ms |
total: | 143ms |
0 / 0 |