2012-01-10 4 views
0

Если у меня несколько таблиц, например comments и user_comments, как бы я запросил их сразу?Несколько запросов и простой вывод (PDO?)

обычно, когда у меня есть одна таблица для выбора Я обычно делаю это:

$query = $db->query("SELECT * FROM comments"); 
while($q = $query->fetchObject()){ 
    $id = $q->id; //getting the id from comments table only 
    $text = $q->comment; //getting the comments from comments table only 
} 

Это дает мне идентификатор и комментарии

Есть ли способ запроса комментарии и user_comments? и, возможно, у него идет, как этот

$id= $q -> comments -> id;//getting the id from comments table 
$text = $q -> comments -> comment;//getting comment from comments table 
$user_id = $q -> user_comments -> id;//getting the id from user_comments 
$user_text = $q -> user_comments -> comments;//getting the comments from user_comments 

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

Возможно ли это?

Thanks

Редактировать: Test try?

$sql = $dbh->query("SELECT * FROM comments WHERE id=4 UNION SELECT * FROM user_comments WHERE id=1"); 
$q = $sql->fetchObject(); 
$name = $q->comments->username; 
$text = $q->user_comments->comments; 
echo $name; 
echo $text; 

ответ

0

Для этого конкретного упражнения забудьте о PDO и сосредоточьтесь на SQL.

Вы можете объединить две таблицы с помощью UNION.

SELECT * FROM table_a 
UNION 
SELECT * FROM table_b 
+0

, но весь мой сайт использует PDO – hellomello

+0

Я не говорю, чтобы не использовать его. Используйте его. Я просто заявлял, что это проблема SQL, а не PDO. Я пытался заставить вас сосредоточиться на части SQL проблемы, вместо того чтобы сосредоточиться на PDO. – Frankie

+0

Можете ли вы привести краткий пример? я бы делал что-то вроде '(" SELECT * FROM table_a WHERE id = $ id UNION SELECT * FROM table_b WHERE id = $ id ")' или что-то еще? – hellomello

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