Les tables de jointure sur le plus proche de la date dans le passé, dans MySQL
J'ai une requête sqlite que je suis en train d'écrire. J'ai deux tables:
TableA (ventes):
id
vente
date
TableB (objectifs):
id
objectif
date
Je suis la sélection de la TableA comme ceci:
SELECT id,les ventes,la date DE la TableA
Maintenant à la "difficulté" de la partie. J'ai besoin de joindre TableB à la requête parce que j'ai besoin de l'objectif champ de la TableB pour chaque ligne dans le TableA. TableB ne contient que des objectifs pour certaines dates, tandis que TableA contient toutes les dates. Donc je ne peut pas utiliser de TableA.date = TableB.date
Au lieu de cela, pour chaque ligne dans le TableA j'ai besoin de prendre l'objectif de la TableB sur la date la plus proche dans le passé, à la date de la TableA. Espère que j'ai été en mesure d'expliquer ce dont j'avais besoin. Ne peux pas comprendre comment le faire..
Vous devez vous connecter pour publier un commentaire.
La plus proche de la date dans le passé.
"Exactement égale à la date" serait une jointure sur le champ de date. (Comme dans les Cendres de la réponse)
"Plus près" doit probablement lire quelque chose comme "plus proche de la date dans le futur" ou "plus proche de la date dans le passé" (ou peut-être pas). Dans ce cas, vous pouvez utiliser une sous-requête avec un where déclaration comparant les dates (< ou >)
Si "le plus proche de la date" est à la fois dans le passé et le présent, je serais probablement le code en écrivant une procédure stockée qui crée une aide de la table contenant la plus pertinente "proche de la date" (à Partir de B) pour chaque date dans le tableau A. de Cette façon, j'aurais plus de contrôle sur le comportement de la procédure et qu'il serait plus facile de changer dans l'avenir.
L'optimisation de la performance peut toujours arriver plus tard.
Viens d'obtenir le produit cartésien puis filtrer inintéressant lignes. En gros:
Je ne sais pas si SQLite soutient que, dure.