简化sql查询以获得每个id一行



我有一个多表SQL查询。

我的需求是:查询是否应该通过"etablisement_id"生成一行。。。以及我想在同一查询中返回的所有信息。

问题是,这个查询目前在一个表上,"机构"可能有"多张照片",突然间,我的查询我目前为同一id生成了几行…

我想要以下语句-LEFT JOIN etablisementContenuMultimedia ON etablissement.etablissement_id = etablissementContenuMultimedia.etablissementContenuMultimedia_etablissementId-仅显示单个多媒体内容。是否可以在下面的查询中执行此操作?

这是生成的查询。

SELECT DISTINCT `etablissement`. * , `etablissementContenuMultimedia`. * , `misEnAvant`. * , `quartier`. *
FROM `etablissement`
LEFT JOIN `etablissementContenuMultimedia` ON etablissement.etablissement_id = etablissementContenuMultimedia.etablissementContenuMultimedia_etablissementId
LEFT JOIN `misEnAvant` ON misEnAvant.misEnAvant_etablissementId = etablissement.etablissement_id
LEFT JOIN `quartier` ON quartier_id = etablissement_quartierId
WHERE (
    misEnAvant_typeMisEnAvantId =1
    AND (
        misEnAvant_dateDebut <= CURRENT_DATE
        AND CURRENT_DATE <= misEnAvant_dateFin
    )
)
AND (
    etablissement_isActive =1
)
ORDER BY `etablissement`.`etablissement_id` ASC
LIMIT 0 , 30

这是ZF 使用的代码

public function find (){
    $db = Zend_Db_Table::getDefaultAdapter();
    $oSelect = $db->select();
    $oSelect->distinct()
            ->from('etablissement')
            ->joinLeft('etablissementContenuMultimedia', 'etablissement.etablissement_id = etablissementContenuMultimedia.etablissementContenuMultimedia_etablissementId')
            ->joinLeft('misEnAvant', 'misEnAvant.misEnAvant_etablissementId = etablissement.etablissement_id')
            ->joinLeft('quartier', 'quartier_id = etablissement_quartierId ')
            ->where ('misEnAvant_typeMisEnAvantId = 1 AND (misEnAvant_dateDebut <= CURRENT_DATE AND CURRENT_DATE <= misEnAvant_dateFin) ')
            ->where ('etablissement_isActive = 1')
            ->order(new Zend_Db_Expr('RAND()'));

    $zSql = $oSelect->__toString();
    if(isset($_GET['debug']) AND $_GET['debug'] == 1)
        echo $zSql ;
    //die();
    $oResultEtablissement = $db->fetchAll($oSelect);   
    return $oResultEtablissement ;
}

你能帮我吗?

真诚,

如果您希望在多个媒体中只显示一个媒体,而不管它是哪一个,那么您可以为查询添加一个限制吗?之后,您可以调整查询是否为ASCending或DESending?

这个查询应该有一个机构的图像(或图像),还是每个活动机构都有一个图像?我看到你有一个极限0.30,这意味着你可能正在分页。。。。

如果你想要的结果是只搜索一个机构,并且它找到的第一个图像会很好。。只需使用"极限1",您将只得到一个结果。

我花时间重做了数据库的整个模型。。。现在它起作用了。对于有缺陷的系统,没有解决方案

最新更新