2013-07-02 2 views
0

Я пытаюсь вставить «заголовок» из двух разных таблиц в запросе MySql. Если я попробую первый запрос ниже, он будет работать. Как только я добавлю второй LEFT JOIN, он по-прежнему получает первый титул «блог», но не получает второй титул «альбомы». Любые идеи о том, как получить оба заголовка из обеих таблиц? Обратите внимание, что мне нужно, чтобы убедиться, что у меня есть оба эти условия там для каждого: updates.ref_table = 'albums' AND updates.ref_id = albums.idДва LEFT JOIN в одном запросе MySQL

Works ...

$query = "SELECT updates.*, albums.title FROM updates "; 
$query .= "LEFT JOIN albums ON updates.ref_table = 'albums' AND updates.ref_id = albums.id "; 
$query .= "WHERE user_id = ".$user_id." ORDER BY date DESC"; 

doen't работа ...

$query = "SELECT updates.*, albums.title, blog.title FROM updates "; 
$query .= "LEFT JOIN blog ON updates.ref_table = 'blog' AND updates.ref_id = blog.id "; 
$query .= "LEFT JOIN albums ON updates.ref_table = 'albums' AND updates.ref_id = albums.id "; 
$query .= "WHERE user_id = ".$user_id." ORDER BY date DESC"; 

ответ

0

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

$query = "SELECT updates.*, albums.title as albumtitle, blog.title as blogtitle FROM updates "; 
$query .= "LEFT JOIN blog ON updates.ref_table = 'blog' AND updates.ref_id = blog.id "; 
$query .= "LEFT JOIN albums ON updates.ref_table = 'albums' AND updates.ref_id = albums.id "; 
$query .= "WHERE user_id = ".$user_id." ORDER BY date DESC"; 
+0

Отлично - спасибо за помощь :) – Chris