MySQL заполняет множественный выбор выпадающего - PullRequest
0 голосов
/ 29 марта 2011

Я пытаюсь заполнить несколько выпадающих списков выбора из MySQL, но каждый выпадающий из другой таблицы.Когда я делаю следующее:

$data_sql = mysql_query("SELECT * FROM countries");
while($data = mysql_fetch_assoc($data_sql)){
  $countrylist .= '<option value="'.$data[country_iso].'">'.$data[country].'</option>';
}

Все отлично работает.Но когда я добавляю больше таблиц следующим образом:

$data_sql = mysql_query("SELECT * FROM countries, states");
while($data = mysql_fetch_assoc($data_sql)){
  $countrylist .= '<option value="'.$data[country_iso].'">'.$data[country].'</option>';
  $statelist .= '<option value="'.$data[state_iso].'">'.$data[state].'</option>';
}

Мои выпадающие списки работают, но каждая строка повторяется 3 раза.

1 Ответ

0 голосов
/ 29 марта 2011

Вы наткнулись на неявное JOIN, в то время как вы хотите UNION

SELECT * FROM countries
UNION 
SELECT * states

Что делает ваш текущий запрос (SELECT * FROM countries, states), так это: Для каждой строки в странах объедините данные из этой страны со всеми штатами.

Это будет означать, что если у вас есть 10 стран и 10 штатов, общее количество строк будет равно 100. Посчитайте, что вам повезло, что вы сделали декартово соединение для очень маленькой таблицы:)

Вы просто хотите сделать 2 запроса отдельно: попытка объединить результаты не так эффективна, как 2 отдельных.

...