我有一個多表SQL查詢。簡化sql查詢以獲得每行ID一行
我需要的是:查詢我應該產生的「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 ;
}
你能幫我的代碼?
真誠,
如果我有60個建立,我需要60行。目前,我提出了一個限制突破問題。事實上,正如我對單一機構有時7或8行,以及我使用「蘭德」那樣,在前5個結果中,我有可能是同一機構的3倍......而且這並不好。 此要求旨在隨機在我的主頁5機構。我會找到一種方法來創建一個好的應用程序,而不是通過php中的重複數據刪除。 – 2012-01-09 15:03:35