Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/56.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 从不同的内部联接表中选择值_Mysql_Sql - Fatal编程技术网

Mysql 从不同的内部联接表中选择值

Mysql 从不同的内部联接表中选择值,mysql,sql,Mysql,Sql,我有以下疑问: SELECT picture.id FROM app_instagram_picture_category category INNER JOIN app_instagram_shop_picture picture ON category.picture_id = picture.id INNER JOIN app_instagram_shop shop ON shop.id = picture.shop_id WHERE category.first_level_catego

我有以下疑问:

SELECT picture.id
FROM app_instagram_picture_category category
INNER JOIN app_instagram_shop_picture picture ON category.picture_id = picture.id
INNER JOIN app_instagram_shop shop ON shop.id = picture.shop_id
WHERE category.first_level_category_id =10
AND shop.isLocked =0
AND shop.expirydate IS NOT NULL 
AND shop.expirydate >  '2014-05-20'
AND shop.owner_id IS NOT NULL 
LIMIT 0, 10;
我想得到10个独特的picture.id,每个都来自不同的商店,我该怎么做?我应该使用分组方式吗?如果是,怎么做

为了澄清这个问题,让我这样说:


假设我有10个店铺,A、B、C、D、E、F、G、H、I、J。我想从每个店铺中获得一张图片,因此总共10张图片,每张图片属于不同的店铺

shop.id和picture.id之间的关系是什么?看起来一个商店行可以链接到多个图片行。如果是这样的话,就没有直接的方法说“对于每个商店,只选择一张图片。”逻辑地思考一下:这个声明应该如何在同一家商店的不同图片之间做出决定?这是武断的吗

我必须构建一个station(用于报表),其中我希望从一对多关系中选择一行,而我选择哪一行并不重要,因此我通过在可用结果中选择
max
主键来实现

SELECT picture.id, shop.id
FROM app_instagram_shop shop
INNER JOIN (select * from app_instagram_shop_picture p where p.id = 
          (select max(p.id) from app_instagram_shop_picture subp where p.shop_id = subp.shop_id)
    ) picture ON (shop.id = picture.shop_id)
INNER JOIN app_instagram_picture_category category ON (category.picture_id = picture.id)
WHERE category.first_level_category_id =10
AND shop.isLocked =0
AND shop.expirydate IS NOT NULL 
AND shop.expirydate >  '2014-05-20'
AND shop.owner_id IS NOT NULL
如果我对您试图做的事情或表之间的关系有错误,请纠正我

编辑:我看到更多你想做的事情。试试这个:

SELECT picture.id, shop.id
FROM app_instagram_shop shop
INNER JOIN (
        select * from app_instagram_shop_picture p LIMIT 0,10
    ) picture ON (shop.id = picture.shop_id)
INNER JOIN app_instagram_picture_category category ON (category.picture_id = picture.id)
WHERE category.first_level_category_id =10
AND shop.isLocked =0
AND shop.expirydate IS NOT NULL 
AND shop.expirydate >  '2014-05-20'
AND shop.owner_id IS NOT NULL

我不认为这是我要找的。这将如何从10个不同的商店中选择10张具有特定类别的随机图片?如果在我的原始查询中,我只是执行分组方式呢?为什么您需要分组方式,而您可以在不使用分组方式的情况下存档目标?因为查询看起来比使用分组方式时的查询简单得多,你无法获得每家店铺的10张图片(你最初的目标)。我想你误解了这个问题,我想从每家店铺获得10家店铺的1张图片。。所以总共有10张图片来自不同的商店。再次检查我的更新你试过了吗?
    SELECT 
        picture.id
    FROM 
        app_instagram_picture_category category
        INNER JOIN app_instagram_shop_picture picture ON category.picture_id = picture.id
        INNER JOIN app_instagram_shop shop ON shop.id = picture.shop_id
    WHERE 
        category.first_level_category_id =10
        AND shop.isLocked =0
        AND shop.expirydate IS NOT NULL 
        AND shop.expirydate >  '2014-05-20'
        AND shop.owner_id IS NOT NULL 
    GROUP BY 
        shop.id