Toon posts:

[MySQL] Zoeken en dubbele items verwijderen.

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik ben bezig met mijn script om voor iedere user een gallery aan te maken met zijn plaatjes, nu kom er het volgende probleem

ik heb een tabel met

gallery_id en pic_id

die kan van meerdere galleries en id's van plaatjes bevatten dus ook de zelfde... als ik nu een query doe wil ik dus alle plaatjes van de user hebben met zo mogelijk de gallery waar ik op zoek... dus doe ik

* selecteer alle plaatjes van de 'user'
* doe een left join om gesavde plaatjes aan de gallery te knopen
nu komen ook de plaatjes van de andere galleries in zicht.

code:
1
2
3
4
5
6
7
8
9
10
SELECT 
DISTINCT
                picdb.*,
                gallerypicdb.*
            FROM
                picdb
            RIGHT JOIN
                gallerypicdb ON picdb.id = gallerypicdb.pic_id
            WHERE
                picdb.user_id=2


en krijg ik dus (vb) het volgende

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
id  random_id  user_id  filename  filedate  filesize  comment  views  type  filex  filey  status  gallery_id  pic_id 
13 sFBj2aXeDKcSnzcbQmhF8nhgO 2 chandler2.gif 2002-08-30 20:09:41 3449   0 gif 60 60 0 1 13 
15 Qg2dz20Lne9HQCOs3oQ2CgATC 2 chandlercounterxmas2.png 2002-08-30 20:09:41 3670   26 png 60 60 0 1 15 
47 4XVaxqCBf6yvypO7glY8Mn9NT 2 chandler_suffie.jpg 2002-08-31 09:29:34 61295   15 jpeg 640 480 0 1 47 
47 4XVaxqCBf6yvypO7glY8Mn9NT 2 chandler_suffie.jpg 2002-08-31 09:29:34 61295   15 jpeg 640 480 0 2 47 
48 egLzxskxP1qt2zKLEawdDrscs 2 chandler_tara.jpg 2002-08-31 09:29:34 59661   25 jpeg 640 480 0 1 48 
48 egLzxskxP1qt2zKLEawdDrscs 2 chandler_tara.jpg 2002-08-31 09:29:34 59661   25 jpeg 640 480 0 3 48 
48 egLzxskxP1qt2zKLEawdDrscs 2 chandler_tara.jpg 2002-08-31 09:29:34 59661   25 jpeg 640 480 0 1 48 
48 egLzxskxP1qt2zKLEawdDrscs 2 chandler_tara.jpg 2002-08-31 09:29:34 59661   25 jpeg 640 480 0 1 48 
48 egLzxskxP1qt2zKLEawdDrscs 2 chandler_tara.jpg 2002-08-31 09:29:34 59661   25 jpeg 640 480 0 1 48 
48 egLzxskxP1qt2zKLEawdDrscs 2 chandler_tara.jpg 2002-08-31 09:29:34 59661   25 jpeg 640 480 0 1 48 
48 egLzxskxP1qt2zKLEawdDrscs 2 chandler_tara.jpg 2002-08-31 09:29:34 59661   25 jpeg 640 480 0 2 48 
16 3W7T93CfZBoYb7HmYpv33Sh7 2 clown.jpg 2002-08-30 20:09:41 37152   27 jpeg 361 406 0 1 16


meerdere keren het zelfde plaatje :{ dat mag dus niet kunnen.

hoe kan ik zorgen dat ik met 1 query alle plaatjes van een user aan de geselecteerde gallery kan knopen en als het plaatje er niet in zit de gallery dan NULL (0) te laten zijn.. zodat je dan dus geen dubbele plaatjes hebt..

Verwijderd

Topicstarter
sorry al geprobeerd maar werkt echter nie :{

code:
1
2
3
4
5
6
7
8
9
10
11
12
SELECT 
DISTINCT
                picdb.*,
                gallerypicdb.*
            FROM
                picdb
            RIGHT JOIN
                gallerypicdb ON picdb.id = gallerypicdb.pic_id
            WHERE
                picdb.user_id=2
            AND
                gallerypicdb.gallery_id=3


zo krijg ik alleen maar de plaatjes te zien die in mijn gallery zitten en niet de plaatjes die niet in die gallery zitten maar toch van die user zijn :)

Verwijderd

Topicstarter
ik heb nog wat anders geprobeerd ;)

code:
1
2
3
4
5
6
7
8
9
10
11
12
SELECT
DISTINCT
picdb.filename,
picdb.id,
gallerypicdb.pic_id,
gallerypicdb.gallery_id
FROM
picdb
LEFT JOIN
gallerypicdb ON picdb.id = gallerypicdb.pic_id
WHERE
picdb.user_id=2 LIMIT 30, 30


uitkomst van de 2e pagina (de dubbelen)

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
filename  id  pic_id  gallery_id  
xtentic.17_11_1998.png 31 31 1 
arrow-next.gif 32 32 1 
arrow-prev.gif 33 33 1 
world4.gif 34 34 1 
worldmap1.gif 35 35 1 
worldsmall.gif 36 36 1 
layout.jpg 37 37 1 
LMS01.jpg 38 38 1 
LMS02.jpg 39 39 1 
LMS04.jpg 40 40 1 
LMS06.jpg 41 41 1 
LMS08.jpg 42 42 1 
LMS08.jpg 42 42 2 
sovjetuni.jpg 43 43 1 
p8.jpg 44 44 1 
p8.jpg 44 44 2 
1199.jpg 45 45 1 
1014756279.9605 46 46 1 
chandler_suffie.jpg 47 47 1 
chandler_tara.jpg 48 48 1 
chandler_tara.jpg 48 48 3 
amd.gif 49 49 1 
amd.gif 49 49 3 
boltbg.gif 50 50 1 
boltbg.gif 50 50 3 
01Italian10.jpg 51 51 1 
chandler.jpg 52 52 1


:X

Ik heb het al anders gedaan..

zo ;)

ik doe 2 query's 1 voor alle bestanden en dan de andere voor de id's van de plaatjes in de galleries

dan save ik die id's van de gallery zo $found_ids[$list->gallery_id] == true; en als de $found_ids op die gallery true is dan is de file (pic) geselecteerd zo niet dan niet :)

Jeej ik leer steeds meer!