2012-07-16 2 views
0

La requête est d'obtenir les dates pour chaque table, j'ai vérifié mon code, mais il reste une erreur de « Chaque table dérivée doit avoir sa propre erreur alias »Obtenir erreur - Chaque table dérivée doit avoir sa propre erreur alias


SELECT T.* 
    FROM (
    SELECT DISTINCT(DATE_FORMAT(p.deliverDate, '%M')) as PDate 
    FROM piglet_po p 
    WHERE p.raiserID = '0025' AND p.rotationNo = '3' 

     AND p.deliverDate NOT IN 
     (SELECT DISTINCT(DATE_FORMAT(f.issuedDate, '%M')) as FDate 
      FROM feed_slip f    
      WHERE f.raiserID = '0025' AND f.issuedDate BETWEEN '2012-06-01' AND '2012-11-01'     

      AND f.issuedDate NOT IN 
      (SELECT DISTINCT(DATE_FORMAT(v.issuedDate, '%M')) as VDate 
       FROM vet_slip 
       WHERE v.raiserID = '0025' AND v.issuedDate BETWEEN '2012-06-01' AND '2012-11-01' 

      AND v.issuedDate NOT IN 
      (SELECT DISTINCT(DATE_FORMAT(w.issuedDate, '%M')) as WDate 
       FROM weight_slip w 
       WHERE w.raiserID = '0025' AND w.issuedDate BETWEEN '2012-06-01' AND '2012-11-01'          
      ) 
     ) 

    ) T 
+2

Vous pouvez voir la mise en forme que vous oubliez un guillemet après l'une des dates, ce qui est peut-être ce qui le vissant vers le haut. –

+1

duplication possible de [chaque table dérivée doit avoir son propre alias] (http://stackoverflow.com/questions/1888779/every-derived-table-must-have-its-own-alias) –

+0

@ZaneBien Merci d'avoir remarqué .. J'ai vérifié sur mon code système il n'y a pas de devis manquant, j'ai édité mon post .. –

Répondre

1

Vous avez oublié l'alias v dans:

 SELECT DISTINCT(DATE_FORMAT(v.issuedDate, '%M')) as VDate 
      FROM vet_slip 
     WHERE v.raiserID = '0025' AND 
       v.issuedDate BETWEEN '2012-06-01' AND '2012-11-01' 

Il y avait aussi une parenthèse fermante manquante, AFAICT. Si vous avez simplement laissé tomber le dernier, alors l'alias T était au mauvais endroit. J'ai supposé que c'était l'une des 'parenthèses intérieures' qui a été abandonnée.

La requête corrigée est donc:

SELECT T.* 
    FROM (SELECT DISTINCT(DATE_FORMAT(p.deliverDate, '%M')) as PDate 
      FROM piglet_po p 
     WHERE p.raiserID = '0025' AND p.rotationNo = '3' 
      AND p.deliverDate NOT IN 
       (SELECT DISTINCT(DATE_FORMAT(f.issuedDate, '%M')) as FDate 
        FROM feed_slip f    
       WHERE f.raiserID = '0025' 
        AND f.issuedDate BETWEEN '2012-06-01' AND '2012-11-01' 
        AND f.issuedDate NOT IN 
         (SELECT DISTINCT(DATE_FORMAT(v.issuedDate, '%M')) as VDate 
          FROM vet_slip v 
         WHERE v.raiserID = '0025' 
          AND v.issuedDate BETWEEN '2012-06-01' AND '2012-11-01' 
          AND v.issuedDate NOT IN 
           (SELECT DISTINCT(DATE_FORMAT(w.issuedDate, '%M')) as WDate 
            FROM weight_slip w 
           WHERE w.raiserID = '0025' 
            AND w.issuedDate BETWEEN '2012-06-01' AND '2012-11-01' 
           ) 
         ) 
       ) 
     ) T 
+0

Il ne renvoie que le PDate .. Il doit retourner tous les jours de FDate, VDate et WDate qui a des transactions enregistrées par relanceur 0025 dans l'ensemble publié Date –

+0

C'est une question très différente - et une question complètement distincte. J'ai corrigé la syntaxe, je pense, mais c'est à vous de corriger la logique de la requête. Je ne comprends pas non plus ce que vous cherchez ou pourquoi vous avez la logique profondément imbriquée que vous avez. Cela ne m'intéresse pas non plus. Vous avez demandé «pourquoi obtenez-vous une erreur de syntaxe particulière», et deux problèmes identifiables qui auraient pu vous amener à la voir, ont été résolus dans la requête révisée. –

Questions connexes