我有一个多表SQL查询。
我的需求是:查询应该通过'etablissement_id'生成一行...以及我希望在同一查询中返回的所有信息。
问题是这个查询目前在一个表上,“建立”可能有“多张照片”,突然,我的查询我目前为同一个id生成几行......
我想要以下声明 - LEFT JOIN
etablissementContenuMultimedia 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 ;
}
你能帮助我吗?
此致
答案 0 :(得分:0)
如果您希望只显示其中一个媒体,无论它是多少,那么您只需添加查询限制即可?之后你可以调整ASCending或DESCending的查询吗?
这个查询是否应该为一个企业提供图像(或图像),或者每个活动企业都有一个图像?我看到你有一个限制0,30,这意味着你可能会分页....
如果您想要的结果是只搜索一个机构,并且它所来的第一个图像可以正常工作..只需使用“限制1”,您将只获得一个结果。
答案 1 :(得分:0)
我花时间重做数据库的整个模型......现在它可以工作了。系统没有解决方案,因为有缺陷的