Archief - SQL: INNER JOIN hoofdpijn

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

Bram

Legacy Member
Code:
"SELECT blogcat.title FROM blogcat INNER JOIN blogs, catblog ON blogs.id = catblog.blogid AND blogcat.id = catblog.catid WHERE catblog.blogid = '$id'"

ik heb dus een tabel met m'n blog categorien (blogcat), een tabel met m'n blogs (blogs) en een tabel die me vertelt welke categorieën van toepassing zijn op welke blog (dus met 3 kolommen: id, blogid en catid).

de bedoeling van de query is dus om de categorieën van een bepaalde blog op te halen...

met bovenstaande array krijg ik echter een lege array, gecontroleerd met:
PHP:
foreach($cats['title'] as $cat) {
	echo "$cat <br />";
}

heeft iemand een ezelsbruggetje ofzo voor die inner joins, want ik krijg er echt hoofdpijn van :(

AsinuS

Legacy Member
Beste,

ik zie niet in waarom jij je tussentabel nog een id geeft .. die table dient toch gewoon om de veel-op-veel relatie weer te geven tussen blog en categorie.

Het resultaat dat je wenst te bereiken is alle categieën van een blog, dan zou ik deze query aanraden, join is imo niet nodig.

Code:
SELECT title
FROM blogcat
WHERE catid IN (
SELECT catid
FROM catblog
WHERE blogid = @blogid)

grtz,

AsinuS

Kheos

Legacy Member
AsinuS zei:
ik zie niet in waarom jij je tussentabel nog een id geeft .. die table dient toch gewoon om de veel-op-veel relatie weer te geven tussen blog en categorie.

waarom zou een tussentabel geen id krijgen? elke relatie is een record en elk record heeft toch een id?

AsinuS

Legacy Member
Kheos zei:
waarom zou een tussentabel geen id krijgen? elke relatie is een record en elk record heeft toch een id?

catId en blogId is toch je samengestelde sleutel, waarom nog 1 bijmaken, das echt overbodig ..

Bram

Legacy Member
AsinuS zei:
catId en blogId is toch je samengestelde sleutel, waarom nog 1 bijmaken, das echt overbodig ..

oké dat de eerste kolom mss overbodig is, maar ze staat er puur en alleen volgens de logica die Kheos hier vermeldt, het doet er ook allemaal niet zoveel toe.

Ik had het graag met INNER JOIN opgelost, omdat het tegelijk een oefening is om het wat onder de knie te krijgen...

met jouw query krijg ik blijkbaar een error, hoewel het hoogstwaarschijnlijk een typo is... ik kijk het vanavond thuis nog eens na. alvast bedankt voor de alternatieve querry, maar ik had toch graag nog de INNER JOIN oplossing gezien.

Alvast bedankt

AsinuS

Legacy Member
een join dient om waarden van meerdere tabellen samen te voegen, vandaar de join - in uw geval is dat imo niet nodig, maar als ge perse join wenst te gebruiken .. ik ga er mijn hoofd niet over breken iig.

Grtz

Bram

Legacy Member
wa denkt ge da ik wil doen? ik heb een tabel met categorieen en een tabel met blogs, de categorien moeten bij de blogs gezet worden...

kunt ge mij anders eens een gestructureerd voorbeeld geven van wanneer het wel zou mogen?

enjoi

Legacy Member
inner join query is als volgt wanneer je 3 tables gebruikt :
Code:
SELECT blogcat.title
FROM blogcat INNER JOIN catblog ON blogcat.id = catblog.catid
	           INNER JOIN blogs ON blogs.id = catblog.blogid
WHERE catblog.blogid = '$id'"

Natuurlijk ken ik de context van je tables niet dus kan ik niet voorspellen wat het resultaat gaat zijn.
grtz,
enjoi.
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan