SIZE does matter.
"You're go at throttle up!"
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
| SELECT
tbl1.id,
COUNT(tbl2.id) AS Aantal
FROM
tabel1 tbl1
INNER JOIN
tabel2 tbl2
ON
tbl1.tbl2_id = tbl2.id
WHERE
Aantal = 1
GROUP BY
tbl1.id |
Zal zoiets wel kunnen denk ik. Let wel op het kleine verschil in datamodel dat ik aanneem, ben je hier niet tevreden mee, dan zie ik hier graag je datamodel plus uitleg.
Hmm.. dat werkt dus niet helemaal.
Werkt INNER JOIN wel in MySQL ? (Ken dat alleen van Access)..
Even een iets completer verhaaltje :
Hopelijk is dat een beetje duidelijk, het is dus een soort driver database. Nu wil ik dus een lijstje maken met daarin de laatst toegevoegde items. Het feit is alleen dat als je een file aan meerdere categorieen toevoegd dat je hem dan met een simpele select meerdere keren in de tracker ziet staan...
Werkt INNER JOIN wel in MySQL ? (Ken dat alleen van Access)..
Even een iets completer verhaaltje :
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
| Files ----- id INT description VARCHAR url VARCHAR Files_Categorieen ----------------- id INT parent_id INT name VARCHAR Files_Per_Categorie ------------------- files_id INT cat_id INT |
Hopelijk is dat een beetje duidelijk, het is dus een soort driver database. Nu wil ik dus een lijstje maken met daarin de laatst toegevoegde items. Het feit is alleen dat als je een file aan meerdere categorieen toevoegd dat je hem dan met een simpele select meerdere keren in de tracker ziet staan...
SIZE does matter.
"You're go at throttle up!"
Pardon, ik las te snel en had niet goed begrepen wat je precies wilt doen 
Maar dan begrijp ik nu niet zo goed wat eigenlijk je probleem is. Een simpele SELECT uit je 'Files' tabel geeft toch geen dubbele drivers
Ik zie ook nergens een datum/tijd veld?
[edit]
Oja, dit:
Maar dan begrijp ik nu niet zo goed wat eigenlijk je probleem is. Een simpele SELECT uit je 'Files' tabel geeft toch geen dubbele drivers
Ik zie ook nergens een datum/tijd veld?
[edit]
Oja, dit:
zegt mij dus niet zo veel (ik type het ook maar eventjes in zonder te testen), geef dan wat meer informatie over wat er niet goed gaat. Overigens is dat in dit geval niet meer nodig omdat ik je probleem verkeerd begreepHmm.. dat werkt dus niet helemaal.
Ben inderdaad niet helemaal 100% volledig geweest .... Moi fout! 
Er zijn wel degelijk timestamp veldjes, maar dit zijn de velden die volgens mij van belang zijn voor het bouwen van een goede query.
Je kan inderdaad
doen, maar....
In de tracker wil ik de text als link naar de file weergeven en daarvoor heb ik de (lees 'een') categorie nodig en die staat niet in de tabel 'files'. Als ik 'files' en 'files_per_cat' koppel dan ontstaat er dubbele items omdat ze in meerdere categorieen kunnen staan
Gewenste output is dus :
waarbij
Comprende ?
Er zijn wel degelijk timestamp veldjes, maar dit zijn de velden die volgens mij van belang zijn voor het bouwen van een goede query.
Je kan inderdaad
code:
1
| SELECT * FROM files ORDER BY timestamp DESC LIMIT 0,5 |
doen, maar....
In de tracker wil ik de text als link naar de file weergeven en daarvoor heb ik de (lees 'een') categorie nodig en die staat niet in de tabel 'files'. Als ik 'files' en 'files_per_cat' koppel dan ontstaat er dubbele items omdat ze in meerdere categorieen kunnen staan
Gewenste output is dus :
code:
1
| <A HREF='files.php?cat=x&id=y'>Omschrijving</A> |
waarbij
code:
1
2
| x = files_per_cat.cat_id y = files.id |
Comprende ?
SIZE does matter.
"You're go at throttle up!"
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
| SELECT
fls.id,
fls.description,
fpc.cat_id
FROM
Files fls
LEFT JOIN
Files_Per_Categorie fpc
ON
fls.files_id = fpc.cat_id
GROUP BY
fls.id
ORDER BY
fls.timestamp DESC
LIMIT
0, 5 |
Ok, dan zal het wel zoies worden...
Soms wel vervelend he, dat MySQL normaal gesproken geen subqueries ondersteunt? Awel, een andere oplossing is:
1) doe eerst een subquery en maak met je script een string met (bv) de id's van deze query
2) doe de main query
"SELECT bla FROM blatable WHERE eenofanderekolom IN ($subquery)"
Werkt goed en is ook best snel.
1) doe eerst een subquery en maak met je script een string met (bv) de id's van deze query
2) doe de main query
"SELECT bla FROM blatable WHERE eenofanderekolom IN ($subquery)"
Werkt goed en is ook best snel.
ten eerste: ignore dirkpostma erg slechte manier.Op maandag 03 september 2001 19:13 schreef Skinny het volgende:
Hoi allemaal,
Na wat geRTFM en geUTFS kom ik hier toch niet uit. Ik wil in MySQL een query uitvoeren die het volgende doet (in 'normaal' sql) :
code:
1 SELECT * FROM tabel1 WHERE tabel1.id IN (SELECT DISTINCT id FROM tabel2)
Wie o wie kan mij helpen en mijn dag weer wat zonniger maken
code:
1
| SELECT distinct tabel1.* from tabel1, tabel2 where tabel1.id=tabel2.id |
That's all.
( En jah, dit is alleen gebaseerd op de specificatie in de eerste bericht
Back In Black!
"Je moet haar alleen aan de ketting leggen" - MueR
Dank voor de reakties..
De oplossing van tomato is met enig boetseerwerk werkend gekregen. De oplossing met twee queries heb ik ook geprobeerd (al voor ik hier gepost had), maar ik wist gewoon dat het in 1 query mogelijk moest zijn...
resultaat :
Thnx!
De oplossing van tomato is met enig boetseerwerk werkend gekregen. De oplossing met twee queries heb ik ook geprobeerd (al voor ik hier gepost had), maar ik wist gewoon dat het in 1 query mogelijk moest zijn...
resultaat :
code:
1
2
3
4
5
6
7
8
9
10
| SELECT files_id, cat_id, headline, date_format(timestamp,'%d/%m') as timestamp FROM files LEFT JOIN files_per_cat ON files_per_cat.files_id = files.id GROUP BY files.id ORDER BY timestamp DESC LIMIT 0,5 |
Thnx!
SIZE does matter.
"You're go at throttle up!"
Pagina: 1