Er du nu også sikker på, at du vil kunne gøre sådan i Oracle? Jeg kender ikke specielt meget til Oracle, men normalt skal du navngive dine "mellemstationer":
SELECT * FROM ((select * from blah) AS tmp1 JOIN (select * from blah2) AS tmp2)
ok.. så kan det være at i liiiiige kan hjælpe mig med et SQL kald: jeg har en tabel..
feed_id | group_id | title | ... | pubDate ========================================== feed_id og pubDate er primær
jeg ønsker så at lave et udtræk hvor group_id grupperes... men kun i de tilfælde hvor group_id != 0, og derefter sortere i forhold til pubDate..
ved ikke om i fik fat i det? men noget ala.. select * from (SELECT * from a group by group_id [men kun i tilfælde af at group_id>0, else ikke]) order by pubDate DESC
Det udtræk jeg ønsker skal være sådan her: 1 | 0 | tit1 | 1859 2 | 1 | tit1 | 1858 // efter forekomsten af første group_id 3 | 1 | tit1 | 1855 // skal alle med samme gruppe komme ind 1 | 0 | tit1 | 1857 // og ellers fortsætter vi som før.. 1 | 0 | tit1 | 1856 1 | 0 | tit1 | 1854 1 | 0 | tit1 | 1853
Måske sådan (eller noget lignende - jeg har ikke testet det):
SELECT * FROM (SELECT * ( SELECT group_id, MAX(pubDATE) AS SortDate FROM dinTabel WHERE group_id <> 0 GROUP BY group_id ) as g INNER JOIN dinTabel t1 ON t1.group_id = g.group_id UNION ALL SELECT t2.*, t2.pubDATE AS SortDate FROM dinTabel t2 WHERE group_id = 0 ) AS t ORDER BY t.SortDate
Okay, så kan jeg måske lige nå at redde en alvorlig fejl :-) - der mangler et FROM:
SELECT * FROM (SELECT * FROM ( SELECT group_id, MAX(pubDATE) AS SortDate FROM dinTabel WHERE group_id <> 0 GROUP BY group_id ) as g INNER JOIN dinTabel t1 ON t1.group_id = g.group_id UNION ALL SELECT t2.*, t2.pubDATE AS SortDate FROM dinTabel t2 WHERE group_id = 0 ) AS t ORDER BY t.SortDate DESC
(Der kan stadig være fejl - forhåbentlig bare ikke så indlysende fejl...)
det virker! :D SELECT * FROM (SELECT news.group_id, news.title, news.tags, news.link, news.hits, news.pubDate, grouping.pubDate as sortDate FROM giga_news as news JOIN (giga_news_grouping as grouping) ON (news.group_id=grouping.group_id) ) as a UNION ALL SELECT news.group_id, news.title, news.tags, news.link, news.hits, news.pubDate, news.pubDate as sortDate FROM giga_news as news where group_id=0
SELECT * FROM (SELECT news.group_id, news.title, news.tags, news.link, news.hits, news.pubDate, grouping.pubDate as sortDate FROM giga_news as news JOIN (giga_news_grouping as grouping) ON (news.group_id=grouping.group_id) ) as a UNION ALL SELECT news.group_id, news.title, news.tags, news.link, news.hits, news.pubDate, news.pubDate as sortDate FROM giga_news as news where group_id=0 ORDER BY sortDate
$SQL = " SELECT feed_id, group_id, title, tags, sorteret.link, hits, pubDate, sortDate, cat.cat_id, cat.cat_name,f.name,f.link as feed_link,last_update FROM ( SELECT * FROM (SELECT news.feed_id, news.group_id, news.title, news.tags, news.link, news.hits, news.pubDate, grouping.pubDate as sortDate FROM giga_news as news JOIN (giga_news_grouping as grouping) ON (news.group_id=grouping.group_id) ) as a UNION ALL SELECT news.feed_id, news.group_id, news.title, news.tags, news.link, news.hits, news.pubDate, news.pubDate as sortDate FROM giga_news as news where group_id=0 ) as sorteret JOIN (giga_category as cat, giga_feeds as f) ON (cat.cat_id=f.cat_id AND f.id=feed_id)";
Det her er nok den ondeste SQL sætning jeg har lavet.. LÆNGE!
tak for hjælpen med at få den syntax til at funke.. hygge
Synes godt om
Ny brugerNybegynder
Din løsning...
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.