[英]SQL Multiple Select on same table
我正好堅持我的SQL查詢。
我想做多個選擇查詢但所有在一個。 每個選擇對於同一個表,相同的列但具有不同的條件。
我現在正在使用它:
/* Ordre d'affichage 1 */
$sql = "SELECT O.INTITULE, O.ENTREPRISENOM, O.TYPECONTRAT, O.DATEDEBUT, O.DATEINSERTION, O.REGION, O.FONCTION, O.ID_DIFFUSEUR, D.Id, D.MiseEnAvantOffres FROM OffreEmploi O, Diffuseur D WHERE O.INTITULE = ? AND O.REGION = $regions AND O.FONCTION = $fonctions AND O.TYPECONTRAT = $type_contrat AND O.ID_DIFFUSEUR = D.Id AND D.MiseEnAvantOffres = 1 ";
/* Ordre d'affichage 2 */
$sql .= "EXCEPT ";
$sql .="SELECT O.INTITULE, O.ENTREPRISENOM, O.TYPECONTRAT, O.DATEDEBUT, O.DATEINSERTION, O.REGION, O.FONCTION, O.ID_DIFFUSEUR, D.Id, D.MiseEnAvantOffres FROM OffreEmploi O, Diffuseur D WHERE O.REGION = $regions AND O.FONCTION = $fonctions AND O.TYPECONTRAT = $type_contrat AND O.ID_DIFFUSEUR = D.Id AND D.MiseEnAvantOffres = 1 ";
/* Ordre d'affichage 3 */
$sql .= "EXCEPT ";
$sql .="SELECT O.INTITULE, O.ENTREPRISENOM, O.TYPECONTRAT, O.DATEDEBUT, O.DATEINSERTION, O.REGION, O.FONCTION, O.ID_DIFFUSEUR, D.Id, D.MiseEnAvantOffres FROM OffreEmploi O, Diffuseur D WHERE O.FONCTION = $fonctions AND O.TYPECONTRAT = $type_contrat AND O.ID_DIFFUSEUR = D.Id AND D.MiseEnAvantOffres = 1 ";
/* Ordre d'affichage 4 */
$sql .= "EXCEPT ";
$sql .="SELECT O.INTITULE, O.ENTREPRISENOM, O.TYPECONTRAT, O.DATEDEBUT, O.DATEINSERTION, O.REGION, O.FONCTION, O.ID_DIFFUSEUR, D.Id, D.MiseEnAvantOffres FROM OffreEmploi O, Diffuseur D WHERE O.FONCTION = $fonctions AND O.ID_DIFFUSEUR = D.Id AND D.MiseEnAvantOffres = 1 ";
/* Ordre d'affichage 5 */
$sql = "SELECT O.INTITULE, O.ENTREPRISENOM, O.TYPECONTRAT, O.DATEDEBUT, O.DATEINSERTION, O.REGION, O.FONCTION, O.ID_DIFFUSEUR, D.Id, D.MiseEnAvantOffres FROM OffreEmploi O, Diffuseur D WHERE O.INTITULE = ? AND O.REGION = $regions AND O.FONCTION = $fonctions AND O.TYPECONTRAT = $type_contrat ";
$sql .= "EXCEPT ";
/* Ordre d'affichage 6 */
$sql = "SELECT O.INTITULE, O.ENTREPRISENOM, O.TYPECONTRAT, O.DATEDEBUT, O.DATEINSERTION, O.REGION, O.FONCTION, O.ID_DIFFUSEUR, D.Id, D.MiseEnAvantOffres FROM OffreEmploi O, Diffuseur D WHERE O.REGION = $regions AND O.FONCTION = $fonctions AND O.TYPECONTRAT = $type_contrat ";
$ query = $ this-> db-> query($ sql,array($ _ POST ['intitule'],$ _POST ['intitule']));
有沒有辦法讓這更容易和可能? (因為目前除外不起作用)
為什么你不能這樣做一個長的where
子句:
SELECT O.INTITULE, O.ENTREPRISENOM, O.TYPECONTRAT, O.DATEDEBUT, O.DATEINSERTION, O.REGION,
O.FONCTION, O.ID_DIFFUSEUR, D.Id, D.MiseEnAvantOffres
FROM OffreEmploi O join
Diffuseur D
on O.ID_DIFFUSEUR = D.Id
WHERE (O.INTITULE = ? AND O.REGION = $regions AND O.FONCTION = $fonctions AND O.TYPECONTRAT = $type_contrat AND D.MiseEnAvantOffres = 1) and
not (O.REGION = $regions AND O.FONCTION = $fonctions AND O.TYPECONTRAT = $type_contrat AND D.MiseEnAvantOffres = 1) and
not (O.FONCTION = $fonctions AND O.TYPECONTRAT = $type_contrat AND D.MiseEnAvantOffres = 1) and
not (O.FONCTION = $fonctions AND D.MiseEnAvantOffres = 1) and
not (O.INTITULE = ? AND O.REGION = $regions AND O.FONCTION = $fonctions AND O.TYPECONTRAT = $type_contrat) and
not (O.REGION = $regions AND O.FONCTION = $fonctions AND O.TYPECONTRAT = $type_contrat);
最后兩個缺少where
子句中的(隱式)連接條件。 如果你有問題,那可能就是原因。 您應該學會始終使用顯式連接。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.