J'ai 2 tables:
Articles:
ID ENTIER
...
Article_versions:
article ENTIER
lang ENUM
heure TIMESTAMP
PRIMARY KEY (article, lang, heure)
...
Je veux sélectionner les champs des articles et des champs de la dernière ligne articles_versions.
Devrais-je utiliser join ou 2 instructions select?
Et comment puis-je faire cela?ligne avec la valeur de champ spécifiée et valeur la plus élevée dans un autre domaine
0
A
Répondre
0
Il confond exactement les informations que vous essayez de récupérer, mais si vous connaissez un ID particulier, vous pouvez utiliser:
SELECT ID,lang,time
FROM articles,article_versions
WHERE articles.ID=<article_id_you_provide> AND
articles.ID=article_versions.article AND
article_versions.time = (SELECT max(time)
FROM article_versions
WHERE article=<article_id_you_provide>);
Permettez-moi savoir si ce n'est pas ce que vous cherchez et je peux réviser ma réponse plus loin.
0
En supposant [Articles_versions] [temps] serait la seule colonne unique de retour dans la jointure ensemble que vous pouvez utiliser ce qui suit:.
SELECT [Articles].[ID], [Articles_versions].[article], [Articles_versions].[lang], MAX([Articles_versions].[time])
FROM Articles Inner Join Articles_versions ON [Articles].[ID] = [Articles_versions].[article]
GROUP BY [Articles].[ID], [Articles_versions].[article], [Articles_versions].[lang]
+0
cela ne récupère pas les dernières versions d'article. Donc MAX (temps) est le plus récent, mais les autres champs de article_versions ne sont pas – kravemir
oui, il fait ce que je veux. Mais qu'en est-il de la performance, n'est-ce pas plus lent que rejoindre ou c'est pareil que rejoindre? – kravemir
bien le faire de cette façon est une jointure dans un sens, car il faut prendre le produit croisé des deux tables et le filtre de clauses where. La raison pour laquelle je n'ai pas utilisé la syntaxe de jointure est que votre clé étrangère dans article_versions n'est pas le même nom que les articles, ce serait donc compliqué de faire une jointure naturelle. –