webForumDet fria alternativet

Visa kategori endast om det finns innehåll i den?

Databaser & SQL

3 svar · 347 visningar · startad av axed

Medlem sedan nov. 200136 inlägg
Frågan#1

Hej,

Har två olika tabeller, en med nyheter och en med kategorier. Varje nyhet tillhör en kategori. Jag vill nu visa kategorierna, men bara om kategorin har minst en nyhet. Frågan borde bli något i stil med:

VÄLJ kategori.namn FRÅN kategori OM kategori.id FINNS_I nyhet.kategori_id.

Men hur ska jag översätta detta till riktig sql-kod?

Medlem sedan juni 200032 967 inlägg
#2

Ett alternativ är en inner join.

select distinct kategori.namn 
from kategori
inner join nyhet on kategori.kategori_id = nyhet.kategori_id
order by kategori.namn

mvh

Medlem sedan nov. 200136 inlägg
#3

Använde den här koden:

SELECT DISTINCT category.name, category.id FROM category, news WHERE category.id = news.category

Det var DISTINCT jag hade missat, så tack för det. Men vilken av ovanstående koder är snabbast om man skulle ha väldigt många rader i databasen?

Medlem sedan juni 200032 967 inlägg
#4

Jag anser att de två olika SQL-frågorna är likvärdiga. Resultatet är detsamma, och de bör tolkas på samma sätt av databasmotorn.

261 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
131 ms — deklarationer (db)
0 ms — hämta statistik (cache)
126 ms — hämta tråd, inlägg och bilagor (db)
118 ms — ändringar (db)