string(16) \"new post comment\" [\"book_id\"]开发者_StackOverflow中文版=> string(1) \"1\" [\"name\"]=> string(9) \"whatever\" [\"author_id\"]=> s" />
开发者

Why output data are not corresponding to it's column in Union All query

开发者 https://www.devze.com 2023-04-06 22:51 出处:网络
Here\'s a piece of the output array(7) { [\"type\"]=> string(16) \"new post comment\" [\"book_id\"]开发者_StackOverflow中文版=> string(1) \"1\" [\"name\"]=> string(9) \"whatever\" [\"author_id\"]=> s

Here's a piece of the output

array(7) { ["type"]=> string(16) "new post comment" ["book_id"]开发者_StackOverflow中文版=> 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.

0

精彩评论

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