2017-08-31 3 views
-1

Avoir un à plusieurs rapport sur les comptes de tables et accounts_prop je tente de récupérer la dernière propriété d'un compte avec la dernière date (bis),ona à de nombreuses relation dernier enregistrement mal parce que la date null

Avoir la requête suivante renvoie des enregistrements, mais il y a un problème lorsque la date est égale à 0000-00-00 alors avant la date est calculée comme la date max

SELECT c.account_id, p.bis 
FROM accounts as c INNER JOIN 
     (
      SELECT account_id, 
        MAX(bis) MaxDate 
      FROM accounts_prop 
      where accounts_prop.bis != 0 
      GROUP BY account_id 
     ) MaxDates ON c.account_id = MaxDates.account_id INNER JOIN 
     accounts_prop p ON MaxDates.account_id = p.account_id 
        AND MaxDates.MaxDate = p.bis 

Comment puis-je exclure les dossiers où la dernière date bis est égale à 0000-00-00

+0

Vous n'êtes pas certain. S'il vous plaît expliquer en détail. Par exemple, nous n'avons pas pu écrire de code à partir du moment où l'on nous a dit "récupérer la dernière propriété d'un compte avec la dernière date". Lisez et agissez sur [mcve]. Nous devrions être en mesure de l'exécuter et obtenir votre sortie en fonction de votre entrée, et quelle est la sortie souhaitée. Dites-nous ce que dit une ligne arbitraire dans chaque table à propos de la situation de l'entreprise en termes de colonnes et de contraintes sur les tables. – philipxy

Répondre

0

Je suppose que vous avez un type de données DATE

De MySQL Doc B.5.4.2 Problems Using DATE Columns

La date spéciale « zéro » 0000-00-00 peut être stocké et récupéré comme 0000-00-00 '. Lorsqu'une date 0000-00-00 est utilisé par connecteur/ODBC, il est automatiquement converti en NULL car ODBC ne peut pas gérer genre de la date

je suggère que vous essayez une des options suivantes pour votre sous-requête:

SELECT account_id, 
     MAX(bis) MaxDate 
FROM accounts_prop 
where accounts_prop.bis > '0000-00-00'    
GROUP BY account_id 

ou

SELECT account_id, 
     MAX(bis) MaxDate 
FROM accounts_prop 
where accounts_prop.bis IS NOT NULL    
GROUP BY account_id 
+0

merci pour les commentaires essayé toutes les variantes, mais ayant encore des problèmes sur les dates nulles, j'utilise mariadb – fefe