powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Выборка, используя таблицу связей для трёх таблиц.
22 сообщений из 22, страница 1 из 1
Выборка, используя таблицу связей для трёх таблиц.
    #38784301
Serzh007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Помогите, пожалуйста, сделать такую выборку.
Есть такие таблицы:

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
CREATE TABLE IF NOT EXISTS `k-ts` (
  `ids` int(10) unsigned zerofill NOT NULL AUTO_INCREMENT,
  `s` varchar(60) NOT NULL COMMENT 'Слово на русском')

CREATE TABLE IF NOT EXISTS `k_l` (
  `idk_l` int(10) unsigned zerofill NOT NULL AUTO_INCREMENT,
  `idk` int(10) unsigned zerofill NOT NULL COMMENT 'Номера на русском',
  `idl` int(10) unsigned zerofill NOT NULL COMMENT 'Номера на английском',
  `idz` int(10) unsigned zerofill NOT NULL COMMENT 'Номера значений')

CREATE TABLE IF NOT EXISTS `l-ts` (
  `ids` int(10) unsigned zerofill NOT NULL AUTO_INCREMENT,
  `s` varchar(60) NOT NULL COMMENT 'Слово на английском')

CREATE TABLE IF NOT EXISTS `tz` (
  `idz` int(10) unsigned zerofill NOT NULL AUTO_INCREMENT,
  `z` varchar(200) NOT NULL COMMENT 'Значение перевода')



Нужно по известному слову из `k-ts`.`s` найти все соответствия в `l-ts`.`s` и `tz`.`z`.

Я пробовал так:
Код: sql
1.
SELECT `idl`, `idz` FROM `k_l` join `k-ts` on `k_l`.`idk` = `k-ts`.`ids` where `k-ts`.`s` = 'облака'



Но не соображу, как теперь полученные айди заменить на соответствующие значения из `l-ts`.`s` и `tz`.`z`.

В общем, нужно для русского слова вывести в виде таблицы аналог на английском и значеные этого аналога.
...
Рейтинг: 0 / 0
Выборка, используя таблицу связей для трёх таблиц.
    #38784347
alex564657498765453
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
мдя...комуто явно пора спать.... не ну просто когда человек спрашивает сколько будет 4*7 на полном серьёзе, то понятно --- балбес не выучил таблицу умножения, но когда вы уважаемый спрашиваете - вот подошол я к дому номер 20 который мне надо, и надо войти в 1 подезд, и вот не соображу как мне зная что здание 20е, зайти в первый подезд...:) точно пора выспаться.

а то сам спросил, сам же и ответил в конце поста.... :)
...
Рейтинг: 0 / 0
Выборка, используя таблицу связей для трёх таблиц.
    #38784402
Serzh007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
У меня выводится таблица с айдишниками, а мне надо вместо этих айдишников значения из других таблиц.
...
Рейтинг: 0 / 0
Выборка, используя таблицу связей для трёх таблиц.
    #38784442
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andrejkУ меня выводится таблица с айдишниками, а мне надо вместо этих айдишников значения из других таблиц.Ну так подставьте в селект-часть имена тех полей. Сами таблицы в джойн-части уже ведь есть :)
...
Рейтинг: 0 / 0
Выборка, используя таблицу связей для трёх таблиц.
    #38784473
Serzh007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Либо я совсем «ку-ку» либо вы меня не поняли.
Мне из `l-ts` и `tz` нужны значения.
Я подставил:
Код: sql
1.
SELECT `l-ts`.`s`, `tz`.`z` FROM `k_l` join `k-ts` on `k_l`.`idk` = `k-ts`.`ids` where `k-ts`.`s` = 'облака'


Выдаёт ошибку. И да, правильно, у нас ведь нету в джоин-части ни про `l-ts`, ни про `tz`.
...
Рейтинг: 0 / 0
Выборка, используя таблицу связей для трёх таблиц.
    #38784499
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andrejkЛибо я совсем «ку-ку» либо вы меня не поняли.
Мне из `l-ts` и `tz` нужны значения.
Я подставил:
Код: sql
1.
SELECT `l-ts`.`s`, `tz`.`z` FROM `k_l` join `k-ts` on `k_l`.`idk` = `k-ts`.`ids` where `k-ts`.`s` = 'облака'



Выдаёт ошибку. И да, правильно, у нас ведь нету в джоин-части ни про `l-ts`, ни про `tz`.Не поняли, да. Ну приджойньте их тоже, что тут сложного?
...
Рейтинг: 0 / 0
Выборка, используя таблицу связей для трёх таблиц.
    #38784526
Serzh007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
tanglirНе поняли, да. Ну приджойньте их тоже, что тут сложного?
Вот тут я и не соображу, как. Вот и спрашиваю на форуме. Еслиб увидел, то понялбы, а сам не могу родить.
...
Рейтинг: 0 / 0
Выборка, используя таблицу связей для трёх таблиц.
    #38784557
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
2.
3.
FROM `k_l` 
join `k-ts` on `k_l`.`idk` = `k-ts`.`ids`
join `l-ts` on `l-ts`.`ids` = `k-l`.`idl`

Ну и вторую так же. Вообще не пойму, какие тут могут быть затруднения - ну разве что таблицы связаны не так, как должны быть связаны судя по названиям полей, а каким-то гораздо более хитрым образом.
...
Рейтинг: 0 / 0
Выборка, используя таблицу связей для трёх таблиц.
    #38784585
Serzh007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Тут таблица `k_l` (киррилица_латиница) отражает связи между русскими словами, английскими словами и значениями английских слов.
И вот, зная русское слово, нужно из двух разных таблиц выцепить английский аналог и значение этого аналога.
Грубо говоря, тут получается словарь, где:
— одному русскому слову может соответствовать несколько английских:
— одно и тоже значение может быть у разных английских и т. д.

Пока не получилось…
...
Рейтинг: 0 / 0
Выборка, используя таблицу связей для трёх таблиц.
    #38784589
Serzh007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Выцепить нужные строки из т. связей `k_l` могу, а по этим айди выцепить в одну талицу анг. слова и их значения не могу.
...
Рейтинг: 0 / 0
Выборка, используя таблицу связей для трёх таблиц.
    #38784613
Serzh007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Может здесь вообще в один запрос такое не запихнёшь?
...
Рейтинг: 0 / 0
Выборка, используя таблицу связей для трёх таблиц.
    #38784841
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
или ЯННП, или...

Код: sql
1.
2.
3.
4.
5.
6.
select всё, что надо
from k-ts
join k-l on k-ts.id=k-l.idk
/*left*/ join l-ts on l-ts.id=k-l.idl
/*left*/ join tz on tz.id=k-l.idz
where ...
...
Рейтинг: 0 / 0
Выборка, используя таблицу связей для трёх таблиц.
    #38784905
Serzh007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ага…
Вот это, вроде, то, что надо…
Код: sql
1.
2.
3.
4.
5.
6.
select `l-ts`.`s`, `tz`.`z`
from `k-ts`
join `k_l` on `k-ts`.`ids`=`k_l`.`idk`
/*left*/ join `l-ts` on `l-ts`.`ids`=`k_l`.`idl`
/*left*/ join `tz` on `tz`.`idz`=`k_l`.`idz`
where `k-ts`.`s`='облака'


Меня сбивало то, что я думал, что джоины ступенчато действуют, а не равнозначно.
Попроверяю.
...
Рейтинг: 0 / 0
Выборка, используя таблицу связей для трёх таблиц.
    #38784924
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SELECT таб0
...
СОЕДИНЕНИЕ таб1 УСЛОВИЕ какие угодно условия соед.каких угодно таблиц
СОЕДИНЕНИЕ таб2 УСЛОВИЕ какие угодно условия соед.каких угодно таблиц
СОЕДИНЕНИЕ таб3 УСЛОВИЕ какие угодно условия соед.каких угодно таблиц
СОЕДИНЕНИЕ таб4 УСЛОВИЕ какие угодно условия соед.каких угодно таблиц
...
------------------
единственное условие для выдачи адекватного результата - соединения должны быть логичны
...
Рейтинг: 0 / 0
Выборка, используя таблицу связей для трёх таблиц.
    #38785200
alex564657498765453
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andrejkАга…
Вот это, вроде, то, что надо…
Код: sql
1.
2.
3.
4.
5.
6.
select `l-ts`.`s`, `tz`.`z`
from `k-ts`
join `k_l` on `k-ts`.`ids`=`k_l`.`idk`
/*left*/ join `l-ts` on `l-ts`.`ids`=`k_l`.`idl`
/*left*/ join `tz` on `tz`.`idz`=`k_l`.`idz`
where `k-ts`.`s`='облака'


Меня сбивало то, что я думал, что джоины ступенчато действуют, а не равнозначно.
Попроверяю.

a join b on (...) join c on(...)

ступенчато? это как !? ну всмысле чем это от равнозначного отличаеться?
...
Рейтинг: 0 / 0
Выборка, используя таблицу связей для трёх таблиц.
    #38785884
Serzh007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я думал, что последующий джоин использует результат предыдущего. А оказывается, что они независимы друг от друга. Если я правильно понял…
...
Рейтинг: 0 / 0
Выборка, используя таблицу связей для трёх таблиц.
    #38785896
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1)Сервер сам выбирает, в каком порядке джойнить.
2)А какая разница?
...
Рейтинг: 0 / 0
Выборка, используя таблицу связей для трёх таблиц.
    #38785916
Serzh007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
tanglir2)А какая разница?
Это про что вопрос?
...
Рейтинг: 0 / 0
Выборка, используя таблицу связей для трёх таблиц.
    #38786035
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andrejkЭто про что вопрос?andrejkЯ думал, что последующий джоин использует результат предыдущего. А оказывается, что они независимы друг от друга.в чём, по-вашему, отличие одного от другого?
...
Рейтинг: 0 / 0
Выборка, используя таблицу связей для трёх таблиц.
    #38786108
Serzh007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ну, или продолжать выборку только используя результат предыдущего джоина или делать совсем другую выборку, независимо от результата предыдущего джоина. Т. е. джоины независимы. А я думал, что каждый последующий может только с результатом предыдущего делать сравнения для выборки. По другому уже не объяснить, тут всё написано)
...
Рейтинг: 0 / 0
Выборка, используя таблицу связей для трёх таблиц.
    #38786238
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andrejkПо другому уже не объяснитьМогли бы объяснить на примере, лично я всё равно ННП.
...
Рейтинг: 0 / 0
Выборка, используя таблицу связей для трёх таблиц.
    #38787113
Serzh007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Пример нельзя привести, т. к. это было моё заблуждение.
...
Рейтинг: 0 / 0
22 сообщений из 22, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Выборка, используя таблицу связей для трёх таблиц.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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