27. august 2002 - 16:49Der er
7 kommentarer og 2 løsninger
SQL Join query
Hejsa, jeg er kørt død i noget SQL, så jeg håber på hjælp...
Jeg skal lave en query som skal joine 2 tabeller. Jeg er ikke mester i joins, men har da lavet et par stykker.
De 2 tabeller vi skal arbejde med, hedder Articles og ArticleUpdates. ArticleUpdates refererer til Articles med et field der hedder ArticleID.
Det som jeg vil, er at jeg vil have den seneste opdaterings dato i ArticleUpdates, MEN også kunne spørge på nogle ting i Articles. Derfor et join...
Jeg har via Access lavet følgende:
SELECT ArticleUpdates.OldestArticleDate, Articles.ID FROM Articles INNER JOIN ArticleUpdates ON Articles.ID = ArticleUpdates.ArticleID WHERE ((([Articles].[DepartmentID])=90) AND ((ArticleUpdates.OldestArticleDate)>(Now()-12)));
Ja, de der brackets er fuckedup, men se om du kan overleve...
Det svære er så, at jeg kun vil have en row per Article, dvs. den seneste opdatering.
Håber på hjælp, og hvis jeg ikke har forklaret det godt nok, så stil endeligt spørgsmål... På forhånd tak.
I dette særtema om aspekter af AI ser vi på skiftet fra sprogmodeller til AI-agenter, og hvordan virksomheder kan navigere i spændet mellem teknologisk hastighed og behovet for menneskelig kontrol.
SELECT Articles.ID, Max(ArticleUpdates.OldestArticleDate) AS Dato FROM Articles INNER JOIN ArticlesUpdates ON Articles.ArticleID=ArticleUpdates.ArticleID WHERE Articles.DepartmentID=90 AND ArticleUpdates.OldestArticleDate>Now()-12 GROUP BY Articles.ID;
SELECT DISTINCT TOP 1 ArticleUpdates.OldestArticleDate, Articles.ID FROM Articles INNER JOIN ArticleUpdates ON Articles.ID = ArticleUpdates.ArticleID WHERE (([Articles].[DepartmentID])=90) ORDER BY ArticleUpdates.OldestArticleDate DESC;
mysql> SELECT DISTINCT TOP 1 ArticleUpdates.OldestArticleDate, Articles.ID FROM Articles INNER JOIN ArticleUpdates ON Articles.ID = ArticleUpdates.ArticleID WHERE Articles.Department=90 ORDER BY ArticleUpdates.OldestArticleDate DESC; ERROR 1064: You have an error in your SQL syntax near '1 ArticleUpdates.OldestArticleDate, Articles.ID FROM Articles INNER JOIN Article' at line 1 mysql>
Jeg var lidt uklar før, og det må i undskylde. Ud over at have en OldestArticleDate, har en ArticleUpdate også en EditedDate. Vi vil kun have den seneste EditedDate, men på samme tid have mulighed for at søge på OldestArticleDate.
Det har jeg forsøgt at fixe med følgende:
SELECT Articles.ID, ArticleUpdates.OldestArticleDate, Max(ArticleUpdates.EditedDate) AS OldestDate FROM Articles INNER JOIN ArticleUpdates ON Articles.ID=ArticleUpdates.ArticleID WHERE Articles.Department=90 AND ArticleUpdates.OldestArticleDate < '2002-12-11' GROUP BY Articles.ID ORDER BY ArticleUpdates.EditedDate DESC;
Men den giver ikke de rigtige resultater.... Gode råd?
SELECT Articles.ID, ArticleUpdates.OldestArticleDate, Max(ArticleUpdates.EditedDate) AS OldestDate FROM Articles INNER JOIN ArticleUpdates ON Articles.ID=ArticleUpdates.ArticleID WHERE Articles.Department=90 AND ArticleUpdates.OldestArticleDate < '2002-12-11' GROUP BY Articles.ID ORDER BY ArticleUpdates.EditedDate DESC LIMIT 1;
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.