Форум программистов, компьютерный форум, киберфорум
MySQL
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.50/4: Рейтинг темы: голосов - 4, средняя оценка - 4.50
15 / 19 / 3
Регистрация: 25.01.2013
Сообщений: 132
Записей в блоге: 4
1

Left-Join

17.11.2013, 15:08. Просмотров 782. Ответов 4
Метки нет (Все метки)

Имеются 2 таблицы
1- sourcemessages
2 -translations

Базу делал не я, изменять структуру запрещено.

Нужно составить запрос, получить все строки из sourcemessage, обеденив их со строками из таблицы translations так чтобы, в строках где нет перевода, все равно добавлялись строки из messagesource.

В таблице translations ключ не уникален. Каждой строке в sourcemessage может соответствовать несколько переводов на разных языках и у всех из них id тот же.

Что я делал:

SELECT s_message.Id, s_message.message, message.translation
FROM sourcemessage s_message
LEFT JOIN message ON ( s_message.Id = message.id )
WHERE message.language = 'spa'

вернул только строку где есть перевод, строк без перевода не возвращал.

Аналогично этому работает и следующий вопрос

SELECT s_message.Id, s_message.message, message.translation
FROM sourcemessage s_message
LEFT JOIN message ON ( s_message.Id = message.id )
WHERE message.language NOT
IN (

SELECT language
FROM message
WHERE language != "spa"
)
Спасибо за помощь.
0
Миниатюры
Left-Join   Left-Join  
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
17.11.2013, 15:08
Ответы с готовыми решениями:

Запросы RIGHT JOIN и LEFT JOIN в чём различие?
Добрый день! Чем отличаются запросы RIGHT JOIN и LEFT JOIN, если они выдают один и тот же результат?

Переделать запрос LEFT JOIN -> INNER JOIN
Доброго времени суток, помогите переделать запрос с использованием LEFT JOIN на INNER JOIN ...

Ошибка "Integrity constraint violation" при запросе INNER JOIN LEFT JOIN
это запрос на вывод категорий в каждой категории есть файлы и для каждой категории я хочу вывести...

left join
Есть 2 таблицы: name1 и name2; name1 создана так: create table name1(id int(3) auto_increment,...

4
Эксперт по компьютерным сетямЭксперт NIX
11747 / 6722 / 630
Регистрация: 09.09.2009
Сообщений: 26,575
17.11.2013, 15:21 2
не уверен, но попробуйте просто jоin
1
603 / 481 / 171
Регистрация: 02.03.2010
Сообщений: 1,194
17.11.2013, 15:46 3
1.
MySQL
1
2
3
4
SELECT s_message.Id,
           s_message.message,
           (SELECT message.translation FROM message WHERE s_message.Id = message.id AND message.language = 'spa'
FROM sourcemessage s_message
2.
MySQL
1
2
3
4
5
6
SELECT s_message.Id,
           s_message.message,
           message.translation
FROM sourcemessage s_message
LEFT JOIN message ON s_message.Id = message.id 
WHERE IF(message.id IS NOT NULL, message.language = 'spa', 1)
есть еще варианты, но, думаю этого будет достаточно
1
15 / 19 / 3
Регистрация: 25.01.2013
Сообщений: 132
Записей в блоге: 4
17.11.2013, 17:41  [ТС] 4
Втотой запрос вывел только 1 строку, но первый работает правильно, спасибо!
0
603 / 481 / 171
Регистрация: 02.03.2010
Сообщений: 1,194
17.11.2013, 19:09 5
На будущее, если нужен лефтджоин и условия ставятся на присоединяемую таблицу, то лучше их писать не в общем WHERE (т.к. от left join'а останется join), а в блоке ON, аля:
MySQL
1
2
3
SELECT s_message.Id, s_message.message, message.translation
FROM sourcemessage s_message
LEFT JOIN message ON s_message.Id = message.id AND message.language = 'spa'
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
17.11.2013, 19:09

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

LEFT JOIN и IN
Добрый день, товарищи. Возможно ли использовать при объединении таблиц условие типа IN Например: ...

Left/ right join
select Nomatter.Film_Id, Strani.id from Nomatter left join Strani on Strani.name = Nomatter.name;...

Строка и LEFT JOIN
Добрый день, есть строка вида <62><45><31> и т.д. там указаны id можно ли как то через LEFT JOIN...

LEFT JOIN и подзапрос
Такой вопрос: есть 2 таблицы client и info client -id -FIO info -id -id_client -mesto

Сложный LEFT JOIN
Проффи подскажите как правильно доработать sql запрос, нужно к текущему запросу, добавить выборку...

Не отрабатывает LEFT JOIN
Пытаюсь сымитировать FULL OUTER JOIN через два LEFT JOIN и UNION, однако первый отрабатывает...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.