Jump to content
  • 0

MySQL вложенный запрос с одной таблицей


banyman
 Share

Question

Здравствуйте
 
помогите, пожалуйста, с запросом
 
 
 
есть таблица стран на разных языках. код страны указан только в англ списке. 
нужно выдернуть одним SQL запросом код страны и название страны на нужном языке.
 
пробовал разные варианты запроса
вот так
 
SELECT   (SELECT geo_countries.iso_code FROM geo_countries WHERE geo_countries.lang = 'en') AS code,  geo_countries.param AS param,    geo_countries.name AS name                                       FROM geo_countriesWHERE geo_countries.lang = 'ru' 

выдает ошибку

#1242 - Subquery returns more than 1 row
 
 
Link to comment
Share on other sites

13 answers to this question

Recommended Posts

  • 0

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

 

хм. попробуй так. протестить не могу, но должно получиться то что ты хочешь

  SELECT en.iso_code AS code,         ru.param    AS param,           ru.name     AS name     FROM geo_countries en,       geo_countries ru  WHERE         en.lang = 'en' AND                                            ru.lang = 'ru' AND        ru.param = en.id    

Ещё Лефт джойнами также можно сделать

 

 

Подкорректировал тот ляп)  Должно быть вот так

Edited by Николя223
Link to comment
Share on other sites

  • 0

А вы вообще понимаете что этот подзапрос делает? Он выбирает все iso-коды из таблицы для английского языка. Очевидно, что он во-первых возвращает много строк, а во-вторых я не думаю, что вам надо именно этого. Подозреваю, что вам надо сделать банальнейший JOIN и всё.

Link to comment
Share on other sites

  • 0

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

 

хм. попробуй так. протестить не могу, но должно получиться то что ты хочешь

  SELECT en.geo_countries.iso_code AS code,         ru.geo_countries.param    AS param,           ru.geo_countries.name     AS name     FROM geo_countries en,       geo_countries ru  WHERE         en.geo_countries.lang = 'en' AND                                            ru.geo_countries.lang = 'ru'

Ещё Лефт джойнами также можно сделать

не сработало...... 

 

подскажите, плиз, как джойном выбрать.

 

 

 

А вы вообще понимаете что этот подзапрос делает? Он выбирает все iso-коды из таблицы для английского языка. Очевидно, что он во-первых возвращает много строк, а во-вторых я не думаю, что вам надо именно этого. Подозреваю, что вам надо сделать банальнейший JOIN и всё.

 

мне нужно выбрать все названия стран на нужном языке, а вот iso_code только англ записей, но у англ версии id=param (в других языках). важно выборку сделать одним запросом.

Link to comment
Share on other sites

  • 0

Не сработало, потому что как я понимаю - вы хотите брать в одну строку.

Сорри, лажанулся в том запросе. жара. и без теста мне сложно построить. )) 

Но тут нужно то, на что можно опереться при выборке. Какое то поле, которое объединяет и русскую и англ версию.

 

id = param .... сразу бы так 

так пробуйте

 

 

Джойном

SELECT   en.iso_code AS code,         ru.param    AS param,           ru.name     AS name     FROM geo_countries en          LEFT JOIN geo_countries ru ON  ru.param = en.id         WHERE         en.lang = 'en' AND                                            ru.lang = 'ru'  

Подкорректировал без джойнов. возможно так заработает http://htmlforum.ru/index.php?showtopic=49546#post_id_331538

Edited by Николя223
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy