MySQL从一个表中逐行选择两个表中的多行

时间:2015-09-23 20:40:00

标签: mysql subquery

我有两张桌子:

1)

CREATE TABLE IF NOT EXISTS book(
    id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    class__id INT,
    book_order INT,
    title VARCHAR(255),
    content TEXT(65535)
) ENGINE=MyISAM;

2)

CREATE TABLE IF NOT EXISTS book_image(
    id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    class__id INT,
    type VARCHAR(12),
    type__id INT,
    image_order INT,
    url VARCHAR(50)
) ENGINE=MyISAM;

我需要获取给定book.class__id的图书清单,以及包含book_image.type = 'book'book_image.type__id = book.id的每本图书的所有图片。此外,book_images需要按image_order列分别为每本书排序。

我需要生成的对象看起来像这样:

object(stdClass)
'books' => array (size=2)
    0 => 
        object(stdClass)
        'id' => 13
        'class__id' => 55
        'book_order' => 1
        'title' => xyz
        'content' => xyz
        'book_images' => array (size=2)
            0 =>
                object(stdClass)
                'id' => 529
                'class__id' => 55
                'type' => book
                'type__id' => 13
                'image_order' => 1
                'url' => xyz
            1 =>
                object(stdClass)
                'id' => 27
                'class__id' => 55
                'type' => book
                'type__id' => 13
                'image_order' => 2
                'url' => xyz
    1 => 
        object(stdClass)
        'id' => 21
        'class__id' => 55
        'book_order' => 2
        'title' => xyz
        'content' => xyz
        'book_images' => array (size=1)
            0 =>
                object(stdClass)
                'id' => 420
                'class__id' => 55
                'type' => book
                'type__id' => 21
                'image_order' => 1
                'url' => xyz

我想为每本书一个接一个地避免复杂的foreach()循环与多个查询...我尝试了各种类型的连接并选择子查询无济于事。

如何使用单个查询执行此操作?

0 个答案:

没有答案