Форум программистов, компьютерный форум, киберфорум
MySQL
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
151 / 135 / 29
Регистрация: 02.07.2013
Сообщений: 973

Как получить желаемый результат селекта?

03.11.2019, 20:25. Показов 595. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуте, есть у меня значить 2 таблицы (упрощу свой случай).

первая таблица страны(country) 2 домена:
country_id //// name

вторая таблица регионы(region) 3 домена:
region_id////country_id name////name

довольно понятно что выведет запрос

MySQL
1
SELECT country.name, region.name FROM country, region WHERE region.country_id=country.country_id
в результате будет что-то типа:

россия московская область
россия белгородская область
россия архангельская область
сша штат юта
сша штат пенсильвания

а я хочу получить такую штуку:
autoindex parentindex name
1 none россия
2 none сша
3 1 белгородская область
4 1 московская область
5 1 архангельская область
6 2 штат юта
7 2 штат пенсильвания

сперва чтобы как-то независимо проиндексировалось по первому столбцу, во втором столбце либо null либо ссылка на родитель а в третьем имя. как-то такое сделать можно? или что-то похожее?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
03.11.2019, 20:25
Ответы с готовыми решениями:

Как округлить результат селекта
В общем есть таблица workers с колонкой дней рожденья рабочих birthday даты ДР рабочих у меня рандомные UPDATE workers SET...

Написать SQL, чтобы получить желаемый output
Нужно замочить задачу. Написать SQL, чтобы получить желаемый output. Problem: - Create a list of 'smallest' last name and the...

не могу получить желаемый результат в программе
Сама программа компилируется и выводит желаемое количество чисел. но при условии прекратить задачу продолжает выводить числа. Не выводит...

6
 Аватар для crautcher
2450 / 2301 / 597
Регистрация: 27.05.2011
Сообщений: 7,845
04.11.2019, 10:17
Цитата Сообщение от golosalex Посмотреть сообщение
во втором столбце либо null либо ссылка на родитель
left join
0
151 / 135 / 29
Регистрация: 02.07.2013
Сообщений: 973
04.11.2019, 16:02  [ТС]
а как этот left join написать чтобы в один и тот же столбец ушли столбцы из разных таблиц?


подробнее о входных данных:

на просторах сети нашел базу данных с городами мира. состоит она из трех таблиц ()

первая таблица: country
country_id ||| name

вторая таблица: region
region_id ||| country_id ||| name

третья таблица: city
city_id ||| region_id ||| country_id |||| name


ничего лучше чем запрос такого типа я не придумал:
MySQL
1
2
3
4
SELECT country.name, region.name, city.name
FROM country, region,city
WHERE country.country_id = region.country_id
      AND city.region_id         = region.region_id.
получится в результате что-то типа такого(но много строк):

Россия | Белгородская область | Алексеевка
Россия | Белгородская область | Белгород
Россия | Белгородская область | Валуйки
Россия | Московская область | Москва
Россия | Московская область | Подольск
Россия | Московская область | Балашиха
США | штат Юта | Скофилд

и т.д. на лицо избыточность: имена родителей повторяются к тому же мне кажется не хватает числовых индексов, чтобы быстрее на сервере обработать запрос в JSON массив.

хотелось бы видеть примерно такой результат:

id | parent_id | name
1 | null | Россия
2 | null | США
3 | 1 | Белгородская область
4 | 1 | Московская область
5 | 2 | штат Юта
6 | 3 | Алексеевка
7 | 3 | Белгород
8 | 3 | Валуйки
9 | 4 | Москва
10 | 4 | Подольск
11 | 4 | Балашиха
12 | 5 | Скофилд
0
 Аватар для crautcher
2450 / 2301 / 597
Регистрация: 27.05.2011
Сообщений: 7,845
04.11.2019, 16:24
Я в первый раз неверно понял, , тут нужно через union

MySQL
1
2
3
4
5
select null as  parent_id, country.name from ...
union
SELECT country_id as parent_id, region.name from ...
union
...
0
231 / 163 / 54
Регистрация: 26.10.2014
Сообщений: 928
04.11.2019, 16:31
MySQL
1
2
3
4
5
SELECT null as parent_id name FROM country
union
SELECT country_id as parent_id, name FROM region
union
SELECT region_id as parent_id name FROM city
Добавлено через 1 минуту
ну вот, опередили
0
151 / 135 / 29
Регистрация: 02.07.2013
Сообщений: 973
04.11.2019, 17:59  [ТС]
а что делать если если ID уникален только в рамках своей таблицы. то есть country id может совпапасть с city id/ есть ли способкак то это обойти или только изначально пректировать БД чтобы все id во всех таблицах были уникальны глобально?
0
231 / 163 / 54
Регистрация: 26.10.2014
Сообщений: 928
04.11.2019, 18:20
Цитата Сообщение от golosalex Посмотреть сообщение
изначально пректировать БД чтобы все id во всех таблицах были уникальны глобально
в таких случаях используется составной ключ
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
04.11.2019, 18:20
Помогаю со студенческими работами здесь

Как сохранить результат Селекта, если он содержит несколько строк?
Ногами не пинайте, после выполнения запроса в ADOQuery(переименован для удобности в ADOOrders) SELECT может возвращать несколько строк от 1...

Результат селекта записать в переменную
Такой вопросик, я в форме созданой визардом для одной таблици, на событие клик кнопки пишу самый постой селект, и при нажатии на кнопку...

Как получить такой результат? Результат на Картинке
Как сделать так чтобы лого было по середине, а текст по бокам....все как на картинке? Что написать в HTML и CSS? Заранее спасибо)

Можно ли в логическом выражении после оператора IF сравнивать результат СЕЛЕКТА с какимто значением?
Я пишу Сторед процедуру, селектом выбираю поле можно ли его сравнить с каким-то значением? в моем случае с null.. CREATE PROCEDURE...

Получить значение value выбраного селекта
Всем привет, чет не получается получить значения с select <select name="age" id="age" spellcheck="true"> ...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Доступность команды формы по условию
Maks 07.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: сделать доступной кнопку (команда формы "ЗавершитьСписание") при. . .
Уведомление о неверно выбранном значении справочника
Maks 06.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "НарядПутевка", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если в документе выбран неверный склад. . .
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2. Данный документ берёт данные из другого нетипового документа. . .
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать программный контроль на предмет проведения документа. . .
Программный контроль заполнения реквизитов табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: 1. Реализовать контроль заполнения реквизита. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru