문제

Here's a piece of the output

array(7) { ["type"]=> string(16) "new post comment" ["book_id"]=> string(1) "1" ["name"]=> string(9) "whatever" ["author_id"]=> string(4) "test" ["content"]=> string(19) "2011-07-16 03:20:01" ["create_time"]=> string(1) "3" ["id"]=> string(1) "1" }

And this is part of my query

                     SELECT 'bookcomment' AS type
                                ,b.book_id
                                ,b.name 
                                ,c.book_id 
                                ,c.author_id 
                                ,c.content
                                ,c.create_time AS create_time
                                ,u.id 
                                ,u.name 
                                FROM tbl_book AS b,
                                            tbl_book_comment AS c,
                                            tbl_user AS u
                                WHERE u.id=c.author_id in (1,2) AND b.book_id=c.book_id


                    UNION ALL

                    SELECT 'new post comment' AS type
                            ,po.post_id 
                            ,po.title
                            ,pc.author_id
                            ,pc.content
                            ,pc.create_time AS create_time
                            ,pc.post_id
                            ,u.id
                            ,u.name
                            FROM tbl_post as po,
                                        tbl_post_comment as pc,
                                        tbl_user as u
                            WHERE u.id=pc.author_id in(1,2) AND po.post_id=pc.post_id


                    UNION ALL

                    SELECT 'bookrating' AS type
                                ,b.book_id as one
                                ,b.name
                                ,ra.book_id
                                ,ra.user_id
                                ,ra.rating
                                ,ra.create_time AS create_time
                                ,u.id
                                ,u.name
                                FROM tbl_book AS b,
                                            tbl_user_book_rating AS ra,
                                            tbl_user AS u
                                WHERE u.id=ra.user_id in (1,2) AND b.book_id=ra.book_id


                    UNION ALL...
ORDER BY create_time DESC

As the result shown,data correspond to 'author_id' should have correspond to 'content' and 'content' should be 'create_time'. What's wrong with my query?

도움이 되었습니까?

해결책

Looks like you've mixed up the order of the columns in the second SELECT. Your columns are like this (first query on the left, second in the middle, third on right):

type            type            type
b.book_id       po.post_id      one
b.name          po.title        b.name
c.book_id       pc.author_id    ra.book_id
c.author_id     pc.content      ra.user_id
c.content       create_time     ra.rating
create_time     pc.post_id      create_time
u.id            u.id            u.id
u.name          u.name          u.name

The order gets mixed up at pc.author_id by the look of it.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top