2012-01-09 68 views
0

我有一個多表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 ; 
} 

你能幫我的代碼?

真誠,

回答

0

我花時間重做數據庫的整個模型......現在它工作。有沒有解決方案的系統有瑕疵

0

如果你正在尋找有隻是媒體的一種,無論它可能是,你可以再補充一個限制查詢顯示了許多呢?之後,你可以調整查詢ASCending或DESCending?

這個查詢是否應該爲一個機構擁有圖像(或圖像),或者每個活動機構各有一個圖像?我看你有個限度0.30,這意味着你可能分頁....

如果你想要的結果是隻有一個建立了搜索,並且第一圖像談到將正常工作..只是使用「限制1」,你只會得到一個結果。

+0

如果我有60個建立,我需要60行。目前,我提出了一個限制突破問題。事實上,正如我對單一機構有時7或8行,以及我使用「蘭德」那樣,在前5個結果中,我有可能是同一機構的3倍......而且這並不好。 此要求旨在隨機在我的主頁5機構。我會找到一種方法來創建一個好的應用程序,而不是通過php中的重複數據刪除。 – 2012-01-09 15:03:35