powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Программирование [игнор отключен] [закрыт для гостей] / как правильно объеденить таблицы?
18 сообщений из 18, страница 1 из 1
как правильно объеденить таблицы?
    #37774721
Tromani
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
подскажите может кто сталкивался
есть две таблицы

таблица1

ПОЛЕ1:Текстовое значение
ПОЛЕ2:Численное значение

Таблица2
ПОЛЕ1:Текстовое значение
ПОЛЕ2:Численное значение

Примерно выглядит так
ТАБЛИЦА 1 ТАБЛИЦА 2
ПОЛЕ1 ПОЛЕ2 ПОЛЕ1 ПОЛЕ2
запись1 4 запись5 4
запись2 4 запись6 7
запись3 5 запись8 19

как должен выглядеть SQL запрос чтоб получилось так

РЕЗУЛЬТАТ ЗАПРОСА
ПОЛЕ1.ТАБЛИЦА1 ПОЛЕ1.ТАБЛИЦА2
запись1 запись5
запись2

т.е. вывести в результирующую таблицу записи, ПОЛЕ2 для которых имеет одинаковое значение (в примере=4)
пробовал left join и т.д. не проходит
...
Рейтинг: 0 / 0
как правильно объеденить таблицы?
    #37775019
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Подобная операция может иметь смысл в табличном процессоре, но совершенно бессмысленна в SQL.
...
Рейтинг: 0 / 0
как правильно объеденить таблицы?
    #37775032
kDnZP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tromani, INNER JOIN по полу2, дале нумеровать поле1, в разрезе поле1, все что больше 1 - выводить пусто.
...
Рейтинг: 0 / 0
как правильно объеденить таблицы?
    #37775178
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Akina,

угу
select distinct "Ишак" as Выкина from Zukina
...
Рейтинг: 0 / 0
как правильно объеденить таблицы?
    #37775427
Tromani
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
kDnZP,
Вы имеете ввиду дополнительную обработку уже программными средствами? Это то понятно что можно... я думал может я чего не знаю про SQL и он таки может содержит подобную конструкцию с помощью поторой можно было б сразу вывести, как программно сделать это я знаю больше чем один наверно способ, интересует именно SQL запрос который как бы это сказал просто приставлял друг к другу колонки с разных табличек если эти колонки имеют общий признак
...
Рейтинг: 0 / 0
как правильно объеденить таблицы?
    #37775452
kDnZP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tromani, я вам описал логику запроса для ваших данных. Это словестное описание запроса вернет именно то, что вы ожидаете. Но не факт, что правильно, т.к. вы явно не представляете поведение на бОльших объемах данных в случае дублирования строк (или как минимум повторения поле2 более чем 3 раз в разных таблицах).

SQL-запрос я ессно написать могу, но не буду, пока не увижу, что вы хоть чуть-чуть напряглись, подумали, а также предоставили свои наработки, пусть даже неправильные.
...
Рейтинг: 0 / 0
как правильно объеденить таблицы?
    #37775513
TRomanI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
kDnZPTromani,
SQL-запрос я ессно написать могу, но не буду, пока не увижу, что вы хоть чуть-чуть напряглись, подумали, а также предоставили свои наработки, пусть даже неправильные.

ЕЩЕ один умник! поверь дружище я перелопатил кучу вариантов. Объясню попроще чтоб понятнее было.

1Вариант как я бы это решил:

Допустим в делфи я бы взял StringGrid1 и в 1ю колонку вывел бы результат SELECT ПОЛЕ1... FROM ТАБЛИЦА1... where ПОЛЕ2=4, во вторую колонку STRINGGrida вывел бы SELECT ПОЛЕ1... FROM ТАБЛИЦА2... where ПОЛЕ2=4, если б строк не хватало добавил бы просто - в какой табличке больше б записей было б такой высоты б и был бы StringGrid. и имел бы решение.

ЧТОБ вам проще было б самому решить упростим (или усложним) задачу

добавте ,ТАБЛИЦУ 3 которая будет иметь поле ID (уникальное) на которое и ссылаются ПОЛЯ2 в ТАБЛИЦЕ1 и 2. и вот вам реляционность ТАБЛИЦА1 реляционна по отношению к ТАБЛИЦЕ3, ТАБЛИЦА2 реляционна к ТАБЛИЦЕ3. только ТАБЛИЦА2 никак не реляционна к ТАБЛИЦЕ1 именно ввиду такого взаимоотношения таблиц я и пытаюсь решить задачу методами SQL и потому и предположил что SQL должно содержать конструкцию выполняющую такой запрос, когда две или более таблиц реляционны к третьей но нереляционны между собой.

НО как я понял толи SQL не предполагает такого объединения толи я не знаю такой конструкции которая это может описать

я на форум обратился только потому что перелопатил все что мог придумать
...
Рейтинг: 0 / 0
как правильно объеденить таблицы?
    #37775539
kDnZP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TRomanI, да не растраивайтесь вы так. Ну есть проблемы с пониманием, а также осознанием. Хоть это и не оправдывает отсутствие знаний... Но для начала хотя бы потрудились сказать, что за сервак имеете. Да и вообще, интересно, чего именно в эту ветку обратились? Со специализированной наверно вас уже выгнали?

Еще раз: Вы просто не понимаете чего хотите. Решение для вашего набора данных делается элементарно, но оно скорее всего ошибочно. Стринггриды, делфи... Блин... Пичалька(((.
...
Рейтинг: 0 / 0
как правильно объеденить таблицы?
    #37775562
TromanI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
kDnZP, Печально наверно мыслить заданными рамками, не выходя за пределы ограниченные стандартными наборами функций))) в гугле набрал "форум по SQL" туда и попал. видимо зря. я не расстраиваюсь никак и никогда. и уж тем более в общении с вами. что касается делфи и стринггридов, то это был пример для решения в клиентском приложении, я не спорю что можно было используя сервер ДБ который предполагает наличие хранимых процедур и широкие возможности обработки сделать так как вы сказали начально, это и понятно.

Вопрос еще раз состоит в другом и, видимо точно не к вам, kDnZP, можно ли в рамках 1 простой конструкции SELECT...FROM объеденить следущие таблицы

ТАБЛИЦА1
ПОЛЕ1: ID

ТАБЛИЦА_2
ПОЛЕ1: ЗНАЧ_Т2
ПОЛЕ2: LINK_ID

ТАБЛИЦА_3
ПОЛЕ1: ЗНАЧ_Т3
ПОЛЕ2: LINK_ID
....
ТАБЛИЦА_N
ПОЛЕ1: ЗНАЧ_ТN
ПОЛЕ2: LINK_ID

чтоб в итоге иметь например
ID|Знач_Т2|Знач_Т3|...|Знач_ТN|
1 |Т2_запись1|Т3_запись1|TN_записи
1 |T2_запись2|
1 |T2_запись3|

т.е. во второй колонке все записи из таблицы2 по значению id=link_id
в третьей все записи из таблицы3 по значению id=link_id
в n колонке все записи из таблицы_N по значению id=link_id
...
Рейтинг: 0 / 0
как правильно объеденить таблицы?
    #37775564
kDnZP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kDnZP, эх, предчувствуя новый этап истерики... Вот решение для MS SQL Server >=2005:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
;WITH t1(ПОЛЕ1, ПОЛЕ2) AS (
SELECT 'запись1', 4 UNION ALL
SELECT 'запись2', 4 UNION ALL
SELECT 'запись3', 5
), t2(ПОЛЕ1, ПОЛЕ2) AS (
SELECT 'запись5', 4 UNION ALL
SELECT 'запись6', 7 UNION ALL
SELECT 'запись8', 19
)
SELECT   t1.ПОЛЕ1 t1ПОЛЕ1
       ,CASE WHEN ROW_NUMBER() OVER ( PARTITION BY t2.ПОЛЕ1 ORDER BY t2.ПОЛЕ1 )=1 THEN t2.ПОЛЕ1 ELSE '' END t2ПОЛЕ1
FROM    t1
        JOIN t2
        ON t1.ПОЛЕ2 = t2.ПОЛЕ2


Результат:
t1ПОЛЕ1t2ПОЛЕ1запись1запись5запись2
Если вам от этого станет легче.
...
Рейтинг: 0 / 0
как правильно объеденить таблицы?
    #37775567
kDnZP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TromanIВопрос еще раз состоит в другом и, видимо точно не к вам, kDnZP
Да фигня вопрос. Пусть другие помогают, в этой теме больше не будет моих сообщений, если вдруг надумаете что вам надо, приходите в bid=1 . Только изначально ознакомтесь там с темой о правильно задаваемых вопросах.
...
Рейтинг: 0 / 0
как правильно объеденить таблицы?
    #37775613
TRomani
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
kDnZP, спасибо конечно!

я расчитывал что это можно сделать стандартными наборами BDE там не настолько сложное и большое приложение чтоб заморачиваться с MS SQL)))

типа

FROM T1.ID LEFT JOIN T2.POLE1 on (t2.LINK_ID=T1.ID) LEFT JOIN T3.POLE1 ON (T3.LINK_ID=T1.ID)

я то понимаю почему оно именно в таком виде не работает так как мне хочется, думал что есть или кто знает как указать что тут главной остаеться именно таблица T1, но для T3 главным есть предыдущее объединение T1 c T2
...
Рейтинг: 0 / 0
как правильно объеденить таблицы?
    #37775694
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tromaniкак должен выглядеть SQL запрос чтоб получилось так

РЕЗУЛЬТАТ ЗАПРОСА
ПОЛЕ1.ТАБЛИЦА1 ПОЛЕ1.ТАБЛИЦА2
запись1 запись5
запись2

т.е. вывести в результирующую таблицу записи, ПОЛЕ2 для которых имеет одинаковое значение (в примере=4)
пробовал left join и т.д. не проходит
SQL - логичен.

Попробуйте вменяемо обосновать, почему результат выглядит именно так, а не

РЕЗУЛЬТАТ ЗАПРОСА
ПОЛЕ1.ТАБЛИЦА1 ПОЛЕ1.ТАБЛИЦА2
запись2 запись5
запись1
...
Рейтинг: 0 / 0
как правильно объеденить таблицы?
    #37775723
Tromani
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Akina,

да и если включить логику то потому что запись1 первая по порядку

пример
таблица
names
поле:name

таблица 1 содержит записи
Валя
Катя
Света

Select name
from names

даст результат
Валя
Катя
Света

в том порядке в котором оно физически записано в БД
вменяемо обосновал?
...
Рейтинг: 0 / 0
как правильно объеденить таблицы?
    #37776005
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tromaniпотому что запись1 первая по порядку
[skipped]
в том порядке в котором оно физически записано в БД
вменяемо обосновал?
Нет.

Это в файловых БД есть понятия порядка записей, "оно физически записано в БД". В реляционных БД до тех пор, пока не задана сортировка, порядок записей НЕ ОПРЕДЕЛЁН. Или даже жёстче - такого понятия без указания сортировки НЕ СУЩЕСТВУЕТ.

В частности, это означает, что при двух последовательных запросах SELECT fields FROM tableset записи в наборах данных имеют полное право идти в РАЗНОМ порядке. И то, что некоторые СУБД отдают записи в порядке возрастания первичного ключа или расширяют группировку на сортировку - не более чем СУБД-зависимая фича.

Так что твоё "первая по порядку" - это ерунда, от вменяемости крайне далёкая. Учите матчасть.
...
Рейтинг: 0 / 0
как правильно объеденить таблицы?
    #37776181
Tromani
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Akina,

да мне честно до одного места в каком бы порядке они не шли. вроде вопрос, порядка сортировки не касался, тут по ходу не форум на котором можно вопрос задать и решить его, а эдакое сообщество люди из которого пытаются доказать что они умнее других чтоли, наверно только самим себе, я рад вашим познаниям, однако, по моему мнению вы даже сути вопроса не поняли. если всетаки вас волнует вопрос сортировки то меня б устроил и тот который бы выдался при простом обращении к таблице1.

"SELECT fields FROM tableset записи в наборах данных имеют полное право идти в РАЗНОМ порядке." да с чего бы это? чет не разу такого не замечал чтоб при двух выполнениях одного и тогоже запроса записи шли в разном порядке))

ладно сдесь по ходу мне все сказали что хотели, адиос амигос для меня не сложно будет сделать это в приложении быстрее и проще чем париться на форуме доказывая непонятно что непонятно кому, короче попусту время потратил.
...
Рейтинг: 0 / 0
как правильно объеденить таблицы?
    #37776186
Tromani
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Akina
Так что твоё "первая по порядку" - это ерунда, от вменяемости крайне далёкая. Учите матчасть.

Первая по порядку который бы выдал простой запрос SELECT Поле1 From Таблица1 порядок результата такого запроса будет всегда одинаков.
...
Рейтинг: 0 / 0
как правильно объеденить таблицы?
    #37776422
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот поэтому я и говорю - забудьте про файловые БД и учите основы реляционных.
...
Рейтинг: 0 / 0
18 сообщений из 18, страница 1 из 1
Форумы / Программирование [игнор отключен] [закрыт для гостей] / как правильно объеденить таблицы?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]