Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Выборка, используя таблицу связей для трёх таблиц. / 22 сообщений из 22, страница 1 из 1
22.10.2014, 16:16:16
    #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
22.10.2014, 16:36:56
    #38784347
alex564657498765453
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выборка, используя таблицу связей для трёх таблиц.
мдя...комуто явно пора спать.... не ну просто когда человек спрашивает сколько будет 4*7 на полном серьёзе, то понятно --- балбес не выучил таблицу умножения, но когда вы уважаемый спрашиваете - вот подошол я к дому номер 20 который мне надо, и надо войти в 1 подезд, и вот не соображу как мне зная что здание 20е, зайти в первый подезд...:) точно пора выспаться.

а то сам спросил, сам же и ответил в конце поста.... :)
...
Рейтинг: 0 / 0
22.10.2014, 17:00:45
    #38784402
Serzh007
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выборка, используя таблицу связей для трёх таблиц.
У меня выводится таблица с айдишниками, а мне надо вместо этих айдишников значения из других таблиц.
...
Рейтинг: 0 / 0
22.10.2014, 17:24:44
    #38784442
tanglir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выборка, используя таблицу связей для трёх таблиц.
andrejkУ меня выводится таблица с айдишниками, а мне надо вместо этих айдишников значения из других таблиц.Ну так подставьте в селект-часть имена тех полей. Сами таблицы в джойн-части уже ведь есть :)
...
Рейтинг: 0 / 0
22.10.2014, 17:43:45
    #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
22.10.2014, 18:09:03
    #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
22.10.2014, 18:35:46
    #38784526
Serzh007
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выборка, используя таблицу связей для трёх таблиц.
tanglirНе поняли, да. Ну приджойньте их тоже, что тут сложного?
Вот тут я и не соображу, как. Вот и спрашиваю на форуме. Еслиб увидел, то понялбы, а сам не могу родить.
...
Рейтинг: 0 / 0
22.10.2014, 19:02:01
    #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
22.10.2014, 19:41:00
    #38784585
Serzh007
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выборка, используя таблицу связей для трёх таблиц.
Тут таблица `k_l` (киррилица_латиница) отражает связи между русскими словами, английскими словами и значениями английских слов.
И вот, зная русское слово, нужно из двух разных таблиц выцепить английский аналог и значение этого аналога.
Грубо говоря, тут получается словарь, где:
— одному русскому слову может соответствовать несколько английских:
— одно и тоже значение может быть у разных английских и т. д.

Пока не получилось…
...
Рейтинг: 0 / 0
22.10.2014, 19:44:11
    #38784589
Serzh007
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выборка, используя таблицу связей для трёх таблиц.
Выцепить нужные строки из т. связей `k_l` могу, а по этим айди выцепить в одну талицу анг. слова и их значения не могу.
...
Рейтинг: 0 / 0
22.10.2014, 20:31:38
    #38784613
Serzh007
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выборка, используя таблицу связей для трёх таблиц.
Может здесь вообще в один запрос такое не запихнёшь?
...
Рейтинг: 0 / 0
23.10.2014, 07:28:43
    #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
23.10.2014, 09:22:54
    #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
23.10.2014, 09:41:45
    #38784924
Alex_Ustinov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выборка, используя таблицу связей для трёх таблиц.
SELECT таб0
...
СОЕДИНЕНИЕ таб1 УСЛОВИЕ какие угодно условия соед.каких угодно таблиц
СОЕДИНЕНИЕ таб2 УСЛОВИЕ какие угодно условия соед.каких угодно таблиц
СОЕДИНЕНИЕ таб3 УСЛОВИЕ какие угодно условия соед.каких угодно таблиц
СОЕДИНЕНИЕ таб4 УСЛОВИЕ какие угодно условия соед.каких угодно таблиц
...
------------------
единственное условие для выдачи адекватного результата - соединения должны быть логичны
...
Рейтинг: 0 / 0
23.10.2014, 12:29:20
    #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
23.10.2014, 17:45:16
    #38785884
Serzh007
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выборка, используя таблицу связей для трёх таблиц.
Я думал, что последующий джоин использует результат предыдущего. А оказывается, что они независимы друг от друга. Если я правильно понял…
...
Рейтинг: 0 / 0
23.10.2014, 17:54:51
    #38785896
tanglir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выборка, используя таблицу связей для трёх таблиц.
1)Сервер сам выбирает, в каком порядке джойнить.
2)А какая разница?
...
Рейтинг: 0 / 0
23.10.2014, 18:09:36
    #38785916
Serzh007
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выборка, используя таблицу связей для трёх таблиц.
tanglir2)А какая разница?
Это про что вопрос?
...
Рейтинг: 0 / 0
23.10.2014, 20:10:25
    #38786035
tanglir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выборка, используя таблицу связей для трёх таблиц.
andrejkЭто про что вопрос?andrejkЯ думал, что последующий джоин использует результат предыдущего. А оказывается, что они независимы друг от друга.в чём, по-вашему, отличие одного от другого?
...
Рейтинг: 0 / 0
23.10.2014, 23:08:58
    #38786108
Serzh007
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выборка, используя таблицу связей для трёх таблиц.
Ну, или продолжать выборку только используя результат предыдущего джоина или делать совсем другую выборку, независимо от результата предыдущего джоина. Т. е. джоины независимы. А я думал, что каждый последующий может только с результатом предыдущего делать сравнения для выборки. По другому уже не объяснить, тут всё написано)
...
Рейтинг: 0 / 0
24.10.2014, 04:59:37
    #38786238
tanglir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выборка, используя таблицу связей для трёх таблиц.
andrejkПо другому уже не объяснитьМогли бы объяснить на примере, лично я всё равно ННП.
...
Рейтинг: 0 / 0
25.10.2014, 00:42:13
    #38787113
Serzh007
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выборка, используя таблицу связей для трёх таблиц.
Пример нельзя привести, т. к. это было моё заблуждение.
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Выборка, используя таблицу связей для трёх таблиц. / 22 сообщений из 22, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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