Форум программистов, компьютерный форум, киберфорум
Firebird/InterBase
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
10 / 10 / 6
Регистрация: 14.03.2011
Сообщений: 392
1

Составление запроса

01.06.2017, 15:46. Показов 1186. Ответов 21
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Добрый день уважаемые форумчане.

Имеется таблица, в ней два поля и записи такого вида:
SQL
1
2
3
4
5
3 0
2 0
1 0
4 3
5 2
Каким запросом можно получить результаты вида: (3, 4) или (2, 5) или (1) из первой колонки и возможно ли такое вообще только имея такие данные...
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
01.06.2017, 15:46
Ответы с готовыми решениями:

Составление запроса
Здравствуйте. С удовольствием бы разобрался сам, но с БД только начинаю дружить, а срочно надо...

Составление запроса
Есть таблица Users, а в ней есть колонка Ref, куда записывается ID пользователя, который пригласил...

Составление простых запросов
Суть темы - наконец то решил более менее научится составлять запросы к бд и понял что у меня дела...

Составление запроса к БД
Что-то никак разобраться не могу. Помогите пожалуйста. Есть БД, в ней таблица под названием...

21
1040 / 856 / 335
Регистрация: 08.12.2016
Сообщений: 3,283
01.06.2017, 15:55 2
А каким образом вы получили (3, 4) или (2, 5) или (1), а не (3, 5) или (2, 4) или (1, 1)? каким образом вы собирали пары? И почему (1) без пары? Что значит или в вашем случае?
0
10 / 10 / 6
Регистрация: 14.03.2011
Сообщений: 392
01.06.2017, 16:06  [ТС] 3
3,4 это 0,3 из второй колонки, 2,5 это 0,2 из вотрой, ну и 1 это 0

Еще может быть такая структура:
SQL
1
2
3
2 0
3 2
1 2
Тут надо получить 2,3,1
0
1040 / 856 / 335
Регистрация: 08.12.2016
Сообщений: 3,283
01.06.2017, 16:12 4
почему из второй колонки сложились (0,3) (0,2) и (0) ? А не (0, 0) (0, 3) и (2) ?
0
10 / 10 / 6
Регистрация: 14.03.2011
Сообщений: 392
01.06.2017, 16:13  [ТС] 5
Такой алгоритм , 2 это 0, а 3 это 2 и 1 это 2
SQL
1
2
3
2 0
3 2
1 2
0
1040 / 856 / 335
Регистрация: 08.12.2016
Сообщений: 3,283
01.06.2017, 16:17 6
алгоритм и нужно переложить на язык SQL, если хотите чего-то получить запросом.

и как этот алгоритм для трех нулей во втором столбце нашел именно такое сочетание из первого столбца?
0
10 / 10 / 6
Регистрация: 14.03.2011
Сообщений: 392
01.06.2017, 16:23  [ТС] 7
Как это сделать я не знаю, в теории нужно найти запись в первой колонке которая равна 0 во второй, потом найти все записи в первой колонке которые равны первой выборке
0
1040 / 856 / 335
Регистрация: 08.12.2016
Сообщений: 3,283
01.06.2017, 16:27 8
Лучший ответ Сообщение было отмечено Critically как решение

Решение

вот так бы сразу и написали рядом с цифрами

SQL
1
2
3
4
5
6
SELECT t1.F1, t2.F1
FROM 
  Tbl t1
  LEFT JOIN Tbl t2 ON t2.F2 = t1.F1
WHERE
  t1.F2 = 0
1
10 / 10 / 6
Регистрация: 14.03.2011
Сообщений: 392
01.06.2017, 16:33  [ТС] 9
А что такое t1 и t2 ?
0
1040 / 856 / 335
Регистрация: 08.12.2016
Сообщений: 3,283
01.06.2017, 16:39 10
алиасы таблицы Tbl.
когда таблица используется несколько раз (а у нас Tbl LEFT JOIN Tbl) то без них не обойтись, чтобы указать точно левую или правую Tbl мы используем

Добавлено через 2 минуты
левую назвали t1 и отобрали в ней те записи у которых второе поле (F2) нулевое
правую назвали t2 и соединили с левой так, чтобы F1 левой таблицы равнялся F2 правой
0
10 / 10 / 6
Регистрация: 14.03.2011
Сообщений: 392
01.06.2017, 16:39  [ТС] 11
А можно пожалуйста запрос написать для даунов ? ) Таблица: zakaz, Столбцы: nomer, vremya
0
1040 / 856 / 335
Регистрация: 08.12.2016
Сообщений: 3,283
01.06.2017, 16:42 12
и как в вашем алгоритме время может быть нулевым, и как по отобранным номерам с нулевым временем найти новое время, равное этому номеру???
0
10 / 10 / 6
Регистрация: 14.03.2011
Сообщений: 392
01.06.2017, 16:42  [ТС] 13
Я от балды написал названия ))
0
1040 / 856 / 335
Регистрация: 08.12.2016
Сообщений: 3,283
01.06.2017, 16:48 14
тогда пользуйтесь моими F1 и F2, я их тоже от балды написал
1
10 / 10 / 6
Регистрация: 14.03.2011
Сообщений: 392
02.06.2017, 11:56  [ТС] 15
Скажите пожалуйста, а если алгоритм будет более сложный вида:

SQL
1
2
3
3 0
2 3
1 2
Нужно получить все элементы у которых = 0 и все его дочерние элементы.
Тоесть 3 это 0, 2 это 3, а 1 в свою очередь это 2

Тоесть по факту мне нужно получить
SQL
1
2
3 2
2 1
0
1040 / 856 / 335
Регистрация: 08.12.2016
Сообщений: 3,283
02.06.2017, 13:51 16
Цитата Сообщение от Critically Посмотреть сообщение
Тоесть 3 это 0, 2 это 3, а 1 в свою очередь это 2
алгоритма так и не понял.
Цитата Сообщение от Critically Посмотреть сообщение
Тоесть по факту мне нужно получить
у вас это уже было, вы просто поменяли местами столбцы и выкинули запись с F2 = 0

вы бы поменьше абстракциями пользовались, чтоб бы было понятнее, что у вас есть и сто вы хотите
0
10 / 10 / 6
Регистрация: 14.03.2011
Сообщений: 392
02.06.2017, 14:10  [ТС] 17
3 это 0, тоесть 3 это основа, в эту основу входит 2, а 1 в свою очередь принадлежит 2, как то так понятнее ? )
0
1040 / 856 / 335
Регистрация: 08.12.2016
Сообщений: 3,283
02.06.2017, 14:13 18
у вас исходный набор такой и есть. Что вы с ним сделать хотите, почему остаются 2 записи, если вас интересуют три?

Добавлено через 55 секунд
т.е. вас не интересуют те, в кого кто-то уже не входит?
0
10 / 10 / 6
Регистрация: 14.03.2011
Сообщений: 392
02.06.2017, 14:13  [ТС] 19
SQL
1
2
3
4
5
6
7
8
9
 3 0 
 2 3
 1 2
 9 1
 4 0
 5 4
 7 0
 8 7
 6 7
Надо получить 3,2,1,9; 4,5; 7,8,6 есть подозрение что такое вообще нельзя получить используя только запрос
0
1040 / 856 / 335
Регистрация: 08.12.2016
Сообщений: 3,283
02.06.2017, 14:44 20
Цитата Сообщение от Critically Посмотреть сообщение
Надо получить 3,2,1,9; 4,5; 7,8,6
запрос не может в первой строке вернуть 4 столбца, во второй - 2, а в третьей - 3
если вас устроит
3 2 1 9
4 5 NULL NULL
7 8 6 NULL
и уровень вложенности ограничен и небольшой, то удлините запрос
SQL
1
2
3
4
5
6
7
8
SELECT t1.F1, t2.F1, t3.F1, t4.F1
FROM 
  Tbl t1
  LEFT JOIN Tbl t2 ON t2.F2 = t1.F1
  LEFT JOIN Tbl t3 ON t3.F2 = t2.F1
  LEFT JOIN Tbl t4 ON t4.F2 = t3.F1
WHERE
  t1.F2 = 0
1
02.06.2017, 14:44
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
02.06.2017, 14:44
Помогаю со студенческими работами здесь

Составление запроса
Друзья прошу помощи у знатоков, составил базу данных "Управление персоналом" , так вот ломаю...

Составление запроса
Таблица Users: ID | Login | Ref ------------------ 1 | User1 | 0 2 | User2 | 1 3 | User3...

Составление запроса
Итак. Есть 2 таблицы: Users(ID, Login, Pass, Ref) и CartHistory(ID, Login, Amount, Product). В...

Составление запроса
Есть таблица Stats с колонками id, date, sum. Нужно сделать вот как: Объединить sum, где date...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru