SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 02.05.2010 20:13:57

orangecat
Участник
Зарегистрирован: 02.05.2010
Сообщений: 9

Помогите, пожалуйста, с запросом

table1 = countryId  region1   region2   region3
table2 = countryId russianName

надо выбрать из первой таблицы записи (region1, region2, region3) по countryId и заменить их человеческими именами russianName из второй таблицы table2.countryId = region1, table2.countryId = region2, table2.countryId = region3

не ругается на синтаксис, но и на выходе ничегоsad(

SELECT s.region1, s.region2, s.region3, n1.russianName AS name1, n2.russianName AS name2, n3.russianName AS name3 FROM table1 s
LEFT JOIN table2 n1 ON n1.countryId = s.region1
LEFT JOIN table2 n2 ON n2.countryId = s.region2
LEFT JOIN table2 n3 ON n3.countryId = s.region3
WHERE s.countryId = "xxx"

по истечение 2 суток и чтения всевозможных мануалов вариантов больше не осталось sad((

Помогите, пожалуйста!!!

Отредактированно orangecat (02.05.2010 20:59:07)

Неактивен

 

#2 03.05.2010 22:44:31

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: Помогите, пожалуйста, с запросом

1. Лучше используйте просто JOIN (зачем Вам тут левые?);
2. именуйте колонки как-то логичнее — если во второй таблице ключом
является номер региона (а не страны, как у Вас написано), то назовите
его regionId, чтобы не создавать путаницы;
3. Запрос в остальном нормальный — просто данных нету smile

--

А если колонки именованы правильно, то у Вас ошибка в Вашей логике
и надо делать что-то типа
SELECT region1, region2, region3, russianName
FROM table1 JOIN table2 USING (countryId);

Неактивен

 

#3 03.05.2010 23:42:52

orangecat
Участник
Зарегистрирован: 02.05.2010
Сообщений: 9

Re: Помогите, пожалуйста, с запросом

Спасибо!
3й пункт оказался в точку. Выборку надо было делать по другой колонке smile

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson