Почему это легкое объединение не работает? (MySQL) - PullRequest
0 голосов
/ 08 февраля 2010

У меня есть две таблицы, classified и fordon.

classified table:
classified_id (PK)
etc...

fordon table:
id (PK)
classified_id (FK)

Я пытаюсь использовать этот код:

SELECT * FROM classified, fordon WHERE classified.ad_id IN ('$solr_id_arr_imploded') AND classified.classified_id=fordon.classified_id

Кстати, массив представляет собой набор ad_id: s возвращается из solr, не говоря уже о том, что здесь проблема не в этом ...

Затем я использую mysql_fetch_array в цикле while для отображения всех результатов:

while($row = mysql_fetch_array($qry_result)){

но когда я пытаюсь отобразить что-то, находящееся внутри таблицы fordon, тогда не удается найти индекс, появляется ошибка. Но что бы ни находилось внутри стола classified работает эхом!

Есть идеи?

Спасибо

ОБНОВЛЕНИЕ

   while($row = mysql_fetch_array($qry_result)){
   echo $row['type']; // This doesn't work, because the 'type' column is inside the 'fordon' table
   echo $row['headline']; // This does work because it's inside 'classified' table.

1 Ответ

1 голос
/ 08 февраля 2010

Помогает ли это?

SELECT * 
FROM classified c
INNER JOIN fordon f ON c.classified_id=f.classified_id
WHERE classified.ad_id IN ('$solr_id_arr_imploded');

Кроме того, обычно не рекомендуется использовать: SELECT *. Лучше либо выбрать только те элементы, которые вы хотите, либо использовать * в контексте таблицы, из которой вы получаете все, например.

SELECT classified.* 
FROM classified c
INNER JOIN fordon f ON c.classified_id=f..classified_id
WHERE classified.ad_id IN ('$solr_id_arr_imploded');

Когда вы делаете соединения с общим одеялом *, вы получаете все поля во всех таблицах.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...