开发者

fetch multiple tables in one query

开发者 https://www.devze.com 2023-03-23 09:36 出处:网络
This is thirty post in one houre . so i am sorry ! but i did\'t get what i want ! i will try to explain more ..

This is thirty post in one houre . so i am sorry !

but i did't get what i want !

i will try to explain more ..

i have two tables ..

POSTS <-- my ( all site posts ) COMMENTS <-- my ( all site comments )

i want display all POSTS and COMMENTS in this one page

buy ( 1 query )

i have in POSTS table (100 post) and i have in COMMENTS table ( 20 comment 开发者_开发知识库)

i try this code

$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 !
}

in above , iam trying to print comment title

i said above i have ( 20 comments ) only !

the code is output ( 120 comments with repeat ! )

120 is the total of the two tables !

/* i want only print the 20 comments and the 100 post ( in one query )

How i can do that ! ?

in the end i am sorry for this more question

but i am really need help ! my site is down


Your question is super ambiguous, so I will do my best:

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

That is the query you want (same that you have, but * instead of "posts.,comments.".

This will, of course, retrieve all the rows in Posts, even if they don't have any comments. You need to do:

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

to get only a specific post's comments. Of course, that would be silly since it would be the same thing as just doing:

SELECT * FROM comments WHERE post_id = <some_id>

If you want to only select rows in Posts that have comments, you must do:

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

Or

SELECT * FROM posts NATURAL JOIN comments

(they have the same effect)


I am assuming you need to get all posts (and by posts you mean articles)

yes, you can use one query:

SELECT * FROM articles;

To get all articles


<?php
$sql = "SELECT * FROM articles";
$query = mysql_query($sql);
while($result = mysql_fetch_assoc($query){
    echo $result['post_title'];
}
?>
0

精彩评论

暂无评论...
验证码 换一张
取 消