2013-10-04 3 views
0

Что было бы лучшим способом выбрать данные из одной таблицы и сопоставить их с данными в другом, а затем вернуть их вместе?mysql выбрать из нескольких таблиц, где два элемента соответствуют

У меня есть стол с кучей информации в нем, и это актуальное название страны. Мне нужно получить из другой таблицы код страны, который совпадает с названием страны

Было бы лучше использовать функцию mysql JOIN для связывания данных или использовать что-то вроде foreach() для создания отдельных запросов чтобы получить каждый предмет.

У меня есть чувство ПРИСОЕДИНЕНИЕ (или что-то подобное) было бы лучшим решением, однако я действительно не знаю, как построить запрос mySQL, имея в виду, мне нужны данные, возвращенные из обеих таблиц.

$sql = "SELECT DISTINCT r.country,c.* FROM resorts LEFT JOIN (SELECT * FROM Country WHERE r.country = c.countryName)"; 

Таблица 1

  • страна

Таблица 2

  • ID
  • COUNTRYNAME
  • CountryCode
+0

Можете ли вы показать запрос, который вы написали? – aaron

+0

Можете ли вы поделиться образцами данных? – AgRizzo

+0

Я добавил их на вопрос – user1711576

ответ

1
SELECT r.country,c.id, c.CountryName, c.CountryCode 
FROM resorts as r 
LEFT JOIN Country AS c 
    ON r.country = c.countryName 

Или избавиться LEFT, чтобы вернуть все курортные записи, в которых есть страна (в отличие от LEFT, которая возвращает все курортные записи, независимо от наличия записи в стране

+1

У вас была пара проблем с вашим запросом. Во-первых, вы использовали табличные псевдонимы, не определяя их (r и c). Во-вторых, вы слишком усложнили ЛЕВЫЙ ПРИСОЕДИНЕНИЕ – AgRizzo

2

Это очень простая концепция в MySQL; один из самых простых объединений:

SELECT columns, countryCode 
FROM t1 
JOIN t2 ON (t1.countryName = t2.countryName) 

EDIT: Вы добавили свои реальные имена таблиц/столбцов в вашем вопросе, так что я буду переписывать запрос с теми:

SELECT id, countryName, countryCode 
FROM Country 
JOIN resorts ON (country = countryName) 
+0

Как это сделать запрос к другой таблице? – user1711576

+0

@ user1711576 Вам придется вникнуть в исходный код MySQL, чтобы знать, что я думаю. Возможно, это поможет: http://www.codinghorror.com/blog/2007/10/a-visual-explanation-of-sql-joins.html –

+0

Хорошо, я вижу сейчас. Я думал, что вам нужно выполнить выбор в другой таблице, а не в msSQL, сделав это в соединении. – user1711576

0

Присоединиться к SQL возвращает данные из обеих таблиц, , когда вы присоединяетесь к двум таблицам, парсер SQL/движок SQL производит «декартово произведение» и цикл в каждой строке из таблицы1 и проверяет условие соединения с каждой строкой из второй таблицы table2, возвращая выбранные столбцы из обеих таблиц. Так, например, в конце, когда вы присоединитесь к таблице1 (которая содержит 2 строки) с таблицей2 (которая содержит 3 строки), вы на самом деле выполняете проверки/петли 2 * 3, которые равны 6.

Смежные вопросы