Последние записи
- Рандомное слайдшоу
- Событие для произвольной области внутри TImage
- Удаление папки с файлами
- Распечатка файла
- Преобразовать массив байт в вещественное число (single)
- TChromium (CEF3), сохранение изображений
- Как в Delphi XE обнулить таймер?
- Изменить цвет шрифта TextBox на форме
- Ресайз PNG без потери прозрачности
- Вывод на печать графического файла
Интенсив по Python: Работа с API и фреймворками 24-26 ИЮНЯ 2022. Знаете Python, но хотите расширить свои навыки?
Slurm подготовили для вас особенный продукт! Оставить заявку по ссылке - https://slurm.club/3MeqNEk
Online-курс Java с оплатой после трудоустройства. Каждый выпускник получает предложение о работе
И зарплату на 30% выше ожидаемой, подробнее на сайте академии, ссылка - ttps://clck.ru/fCrQw
21st
Дек
Запрос из трех таблиц, дубли информации
Posted by obzor under sql
Возникла необходимость собрать данные из 3-х связанных таблиц, но получается не так как хотелось бы.
Есть три таблички:
1: `tbDoma`
Street
Home
2:`tbOptions_doma`
Name
Value
Dom_id
3: `tbObject_Beside`
Name
distance
Dom_id
Как объединить таблицы и избежать дублей? Или лучше разбить запрос на 3? Сперва найти ld а по нему остальные значения 2х таблиц?
select left.*, right.*
from ( select 1 as nn, ...
union select 2 as nn, ....
) as left_t
RIGHT JOIN ( select ??? as nn, .....
) as right_t on right_t.nn =left_t.nn
ЕСЛИ …
1. найдется чем заменить ??? в последнем вложенном запросе (recno ? )
или же найдется возможность написать функцию (вычислимое поле) для этого.
обычно это
select ... , ( select count() from where ? < ? ) as nn from ... order by ?
2. первые два запроса «отдадут» ровно по одной записи.
select t.Street,t.Home,t.Name,t.Value ,t.distance from
(
SELECT
`tbDoma`.Street as Street ,
`tbDoma`.Home as Home ,
`tbOptions_doma`.Value as Value ,
`tbObject_Beside`.`Name` as Name,
`tbObject_Beside`.`distance`as distance
FROM
`tbOptions_doma`, `tbDoma`,`tbObject_Beside`
WHERE
`tbDoma`.Street='Амурская' AND `tbDoma`.Home='84' AND
`tbOptions_doma`.Dom_id=`tbDoma`.id AND
`tbObject_Beside`.Dom_id = `tbOptions_doma`.Dom_id
) as t
group by t.Street,t.Home,t.Name,t.Value ,t.distance
order by t.Street,t.Home,t.Name,t.Value ,t.distance
Качество кода не гарантирую. Работаю с MsSQL,Firebird подобное там выполнить можно
Случайные статьи
Купить рекламу на сайте за 1000 руб
пишите сюда - alarforum@yandex.ru
Да и по любым другим вопросам пишите на почту
пеллетные котлы
Пеллетный котел Emtas
Наши форумы по программированию:
- Форум Web программирование (веб)
- Delphi форумы
- Форумы C (Си)
- Форум .NET Frameworks (точка нет фреймворки)
- Форум Java (джава)
- Форум низкоуровневое программирование
- Форум VBA (вба)
- Форум OpenGL
- Форум DirectX
- Форум CAD проектирование
- Форум по операционным системам
- Форум Software (Софт)
- Форум Hardware (Компьютерное железо)