22. juni 2002 - 14:14Der er
19 kommentarer og 1 løsning
Links med kategorier
Hey
Jeg har to tabeller: links_kategorier og links. Tabellen "links" indeholder alle links'ene og den anden indeholde de kategori navne som links'ene er placeret i. Eksempel:
links: -------------------- ID: 1 NAVN: Jubii.dk URL: www.jubii.dk KATEGORI: 2 -------------------- ID: 2 NAVN: fbold.dk URL: www.fbold.dk KATEGORI: 2 -------------------- ID: 3 NAVN: lycos URL: www.lycos.co.uk KATEGORI: 1 --------------------
Så vil jeg gerne have sådan at når jeg går ind på links siden så skal den vise de 5 nyeste i hver kategori. Og hvis der ikke er nogen skal den slet ikke skrive kategorien eller bare skrive "Ingen"! Jeg bruger allerede SELECT koden:
SELECT links.id,links.navn,links_kategorier.navn AS kategori_navn,links_kategorier.id AS kategori_id,links.url FROM links_kategorier LEFT JOIN links ON links.kategori=links_kategorier.id;
Hvis det er til nogen hjælp. Men jeg vil gerne have det til at se sådan her ud når jeg går ind på links siden:
Portaler:
-Jubii.dk -fbold.dk
Blandet links:
-lycos
Og eventuelt også:
Private sider:
Ingen!
Jeg kan ASP og CGI så hvis der er brug for nogen kode så vil jeg gerne have det i ASP eller CFI/PERL. Men det skulle der da ikke være bruge for.
Hos Computerworld it-jobbank er vi stolte af at fortsætte det gode partnerskab med folkene bag IT-DAY – efter vores mening Danmarks bedste karrieremesse for unge og erfarne it-kandidater.
hvis du nu laver din sql om til SELECT TOP 5 links.id,links.navn,links_kategorier.navn AS kategori_navn,links_kategorier.id AS kategori_id,links.url FROM links_kategorier LEFT JOIN links ON links.kategori=links_kategorier.id ORDER BY links_kategorier.id, links.id DESC
så får du kun de 5 nyeste
Synes godt om
Slettet bruger
22. juni 2002 - 14:26#2
Ja, men de bliver ikke gruperet under kategoriens navn...
strSQL1 = "select links_kategorier.navn AS kategori_navn,links_kategorier.id FROM links_kategorier"
open datbase osv. while not oRs.eof response.write oRs("kategori_navn") & "<br />" strSQL2 = "select id, navn FROM links WHERE kategori = " & oRs("id") & "" set oRs2 = conn.execute(strSQL2) while not oRs2.eof response.write oRs2("links") & "<br />" oRs2.MoveNext Wend oRs.MoveNext wend
ups så skal du jo huske top 5 i links sqlen......:o)
while not oRs.eof response.write oRs("kategori_navn") & "<br />" strSQL2 = "select TOP 5 id, navn FROM links WHERE kategori = " & oRs("id") & " ORDER BY ID DESC" set oRs2 = conn.execute(strSQL2) while not oRs2.eof response.write oRs2("links") & "<br />" oRs2.MoveNext Wend oRs.MoveNext
Synes godt om
Slettet bruger
22. juni 2002 - 14:30#6
Ja det kan man godt lave sådan, men kan det ikke laves i en SELECT???
Vi kan hurtigt blive enige om, at ovenstående ikke er særlig elegant eller effektiv. Jeg vil påstå at man kunne lave et, måske ikke elegant, men brugbart, SELECT statement på eks. SQL Server el. Oracle, men jeg vil mene er der ikke er nogen bedre måde at lave det på med MySQL.
SELECT c.sCatname, t.ID, t.sTextHeading FROM tbl_text t LEFT JOIN tbl_cat c ON t.fk_catID=c.ID WHERE t.ID IN (SELECT TOP 5 ID FROM tbl_text WHERE fk_catID=c.ID ORDER BY ID DESC) ORDER BY c.sCatname
Mhhh... Det ser rigtigt nok ud, men jeg kan ikke få det til at virke... Her er min SELECT:
SELECT links.id,links.navn,links.beskrivelse,links_kategorier.navn AS kategori_navn,links_kategorier.id AS kategori_id,links.adresse,links.sprog FROM links_kategorier LEFT JOIN links ON links.kategori=links_kategorier.id WHERE links.id IN (SELECT TOP 5 links.id FROM links WHERE links.kategori=links_kategorier.id ORDER BY links_kategorier.id DESC) ORDER BY links_kategorier.navn;
Synes godt om
Slettet bruger
22. juni 2002 - 15:26#13
Når jeg kører den i phpmyadmin får jeg denne fejl:
Fejl
SQL-forespørgsel :
SELECT links.id,links.navn,links.beskrivelse,links_kategorier.navn AS kategori_navn,links_kategorier.id AS kategori_id,links.adresse,links.sprog FROM links_kategorier LEFT JOIN links ON links.kategori=links_kategorier.id WHERE links.id IN (SELECT TOP 5 links.id FROM links WHERE links.kategori=links_kategorier.id ORDER BY links_kategorier.id DESC) ORDER BY links_kategorier.navn LIMIT 0, 30
MySQL returnerede:
You have an error in your SQL syntax near 'SELECT TOP 5 links.id FROM links WHERE links.kategori=links_kategorier.id ORDER ' at line 1
jeg tror ikke at du kan benytte deres "forslag" til at gøre det anderledes da det du har brug for er en "ægte" subselect ikke bare en simpel reference til en anden tabel
Synes godt om
Slettet bruger
22. juni 2002 - 15:47#20
Yip...
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.