Requête SQL: Joindre deux tables avec la clause where
J'ai un problème avec une requête SQL. J'ai la requête suivante du travail, c'est assez basique:
SELECT *
FROM table1
WHERE Date = CURDATE()
Il y a une colonne dans le tableau 1, qui est appelé h_id
et un table2
avec les colonnes h_id
et name
Je veux joindre les deux tables de sorte que j'ai les noms de table de 2 à partir de la date actuelle.
J'ai essayé ceci, mais il ne semble pas fonctionner
SELECT t2.name, t1.field2
FROM table1 t1
INNER JOIN table2 t2 ON t1.H_ID = t2.H_ID
WHERE t1.Date = CURDATE( )
SQL Server, Sybase ASE, Oracle?
Ce qui ne fonctionne pas - quel résultat obtenez-vous?
Tu veux dire, il n'y a pas de résultat? Je pense que votre critiera Date = CURDATE() ne sera pas vrai que curdate inclure timestamp.. s'il vous Plaît vérifier.
SQL Serveur, j'obtiens un résultat nul, mais je devrais être à l'obtention d'une entrée avec nom et champ2
Qu'entendez-vous par
Ce qui ne fonctionne pas - quel résultat obtenez-vous?
Tu veux dire, il n'y a pas de résultat? Je pense que votre critiera Date = CURDATE() ne sera pas vrai que curdate inclure timestamp.. s'il vous Plaît vérifier.
SQL Serveur, j'obtiens un résultat nul, mais je devrais être à l'obtention d'une entrée avec nom et champ2
Qu'entendez-vous par
null result
??
OriginalL'auteur Mexxer | 2012-03-01
Vous devez vous connecter pour publier un commentaire.
Il pourrait être sensible à la casse.
ou
ne table1 ont champ2 de la colonne?
Si ce n'est pas/donc, et en fonction de votre question, essayez comme ceci:
Une autre possibilité est la clause where, essayez comme ceci:
Une dernière possibilité est qu'il n'est pas tout h_id l'égalité de table1 et table2.
OriginalL'auteur aF.
essayez de supprimer le
WHERE t1.Date = CURDATE( )
et de voir si votre dossier est renvoyé.Si elle l'est, il y a un problème avec votre
CURDATE( )
, essayez d'utiliser la fonction getdate() ou essayer de formater la datede sorte que son problème de mise en forme, essayez de aF est solution alors
ou au dernier resourse essayez de jour(t1.Date) = jour(getdate()) et le mois(t1.date)=mois(getdate()) et l'année(t1.date)=an(getdate ()),
OriginalL'auteur Diego
SQL Server ne prend pas en charge
curdate()
. C'est pour MySQL.La fonction appropriée est
getdate()
Voici un lien officiel la documentation
Edit:
Comme vous l'avez dit dans un commentaire, si
getdate()
ne fonctionne pas, alors vous utilisez MySQL, puis. Essayez ceci:'curdate' is not a recognized built-in function name.
lienComment peut-il obtenir un résultat vide si la requête n'est pas parseable? S'il vous plaît, expliquer.
Cela signifie que l'utilisateur a défini curdate(). Il y avait probablement une transition à un endroit où il/son entreprise est passée de MySQL, SQL Server, et plutôt que de réécrire tout ce qu'ils ont défini curdate().
Il a répondu à un autre utilisateur de répondre en disant que la suppression de la où complètement retourné les résultats, mais à l'aide de la fonction getdate() ne fonctionne pas. Il est probablement juste de l'utilisation de MySQL et SQL Server comme il le pensait.
Si il s'agissait d'une fonction définie par l'utilisateur, il devra être précédé d'un schéma. Il n'y a rien de ce que je connais de SQL Server qui permettrait
curdate()
pour être valide la syntaxe.OriginalL'auteur Mosty Mostacho
Essayer:
ou bien (MySQL):
OriginalL'auteur