2013-07-30 118 views
0

table1> galleries |每个由不同的编号标识从第二张表中根据第三张随机记录加入

table2> images |图库内的图像

table3> galImgLink |每个记录的图像链接到画廊

select 
    galId, 
    galName 
from 
    galleries 
limit 
    0, 10 

加入的图像通过从链接表

select 
    lnkImgId 
from 
    galImgLink 
where 
    lnkGalId = galId 
ORDER BY 
    RAND() 
LIMIT 
    0, 1 

选择随机记录,然后取出由图像表

相关图像上面选择的每个记录
select 
    imgFile, 
    imgTitle 
from 
    Images 
where 
    imgId = lnkImgId and 
    imgStatus = 'active' 

如何将这些组合成一个查询?

回答

0

我相信像下面将工作:

SELECT galleries.galId, galleries.galName, Images.imgFile 
FROM galleries 
JOIN Images 
ON Images.imgId = (
    SELECT lnkImgId 
    FROM galImgLink 
    WHERE lnkGalId = galleries.galId 
    ORDER BY RAND() 
    LIMIT 1 
) 
0

您可以通过联接链接的表。我不像使用t-sql那样熟悉mysql,但以下内容至少应该让你关闭。

select Images.imgFile, galImgLink.lnkImgId, galleries.galId, galleries.galName 
from Images 
inner join galImgLink on Images.imgId = galImgLink.lnkImgId 
inner join galleries on galImgLink.linkGalId = galleries.galId 
limit 0, 10 

在您的文章进一步看,它看起来像你想抓住10家画廊,与每个1幅随机图像,所以你可能需要一个相关子查询:

select galleries.galId, galleries.galName, 
(
select Images.imgFile 
from Images 
inner join galImgLink on Images.imgId = galImgLink.lnkImageId 
where galImgLink.galId = galleries.galId 
order by rand() 
limit 0, 1 
) as imgFile 
from galleries 
limit 0, 10 
相关问题