2011-07-26 2 views
0

Это тридцать сообщений в одном houre. так что я извиняюсь!выборки нескольких таблиц в одном запросе

но я не получил то, что я хочу!

я попытаюсь объяснить подробнее ..

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

< ПОСТЫ - мои (все сообщения сайта) КОММЕНТАРИИ < - мои (все комментарии на сайте)

я хочу показать все сообщения и комментарии в этой одной странице

купить (1 запрос)

я имею в POSTS таблице (100 пост) и я имею в КОММЕНТАРИЯМ таблице (20 комментариев)

я попробовать этот код

$qq = mysql_query("SELECT posts.*,comments.* 
FROM posts LEFT JOIN comments 
ON posts.post_id = comments.post_id"); 
    while($tt = mysql_fetch_array($qq)){ 
    echo $tt['comment_title'] . '<br />'; //the title of comments ! 
} 

в выше, IAM пытается напечатать комментарий титул

я сказал выше, у меня есть (только 20 комментариев)!

код выхода (120 комментариев с повтором!)

120 является суммой двух таблиц!

/* я хочу только напечатать 20 комментариев и 100 пост (в одном запросе)

Как я могу сделать это! ?

в конце концов, я извиняюсь за это дополнительной вопрос

, но я действительно нужна помощь! мой сайт вниз

+0

У вас есть «категории», «настройки» и «статьи», что такое «сообщения»? –

+0

Таблица статей <- содержит свои сообщения –

+3

Пожалуйста, не повторяйте тот же вопрос. Вы можете изменить свой предыдущий вопрос. Если у вас есть дополнительные вопросы по одному и тому же вопросу. – Starx

ответ

0

Ваш вопрос очень неоднозначный, поэтому я сделаю все возможное:

SELECT * FROM posts LEFT JOIN comments ON posts.post_id = comments.post_id 

Это запрос, который вы хотите (то же самое, что и у вас, но * вместо «сообщений». , комментарии. .»

Это, конечно, получить все строки в сообщениях, даже если они не имеют каких-либо комментариев, Вам необходимо сделать следующее:.

SELECT * FROM posts LEFT JOIN comments ON posts.post_id = comments.post_id WHERE posts.post_id= = <some_id> 

получить комментарии только конкретный Post.Конечно, это было бы глупо, так как это было бы то же самое, просто делает:

SELECT * FROM comments WHERE post_id = <some_id> 

Если вы хотите выбрать только строки в сообщениях, которые имеют комментарии, вы должны сделать:

SELECT * FROM posts INNER JOIN comments ON posts.post_id = comments.post_id 

Или

SELECT * FROM posts NATURAL JOIN comments 

(они имеют тот же эффект)

+0

в любом случае я должен сделать два запроса! Я работал нормально с двумя запросами, но я решил сократить их одним запросом, но это кажется плохой идеей, Спасибо, Крис, очень за вашу помощь –

0

Я предполагаю, что вам нужно, чтобы получить все сообщения (и сообщений вы имеете в виду статьи)

да, вы можете использовать один запрос:

SELECT * FROM articles; 

Чтобы получить все статьи

+0

да я знаю!, , но я хочу получить все categori es и все настройки! Я хочу использовать один запрос для извлечения всех трех таблиц! –

+0

без дополнительной информации о полях на ваших таблицах, я предлагаю вам обратиться к документации mysql по JOINs здесь -> http://dev.mysql.com/doc/refman/5.0/en/join.html надеюсь, что это может быть help: D – ZaQ

0
<?php 
$sql = "SELECT * FROM articles"; 
$query = mysql_query($sql); 
while($result = mysql_fetch_assoc($query){ 
    echo $result['post_title']; 
} 
?> 
Смежные вопросы