Toon posts:

[MYSQL] records samenvoegen uit een tabel obv gelijke waarde

Pagina: 1
Acties:
  • 109 views sinds 30-01-2008
  • Reageer

Verwijderd

Topicstarter
ik heb een tabel
die simpelweg bestaat uit

ID | NAAM | EMAIL | SCORE

nu wil ik mensen met dezelfde score laten zoeken en printen in een tabel, ik had het volgende sql statement bedacht, maar die doet allesbehalve wat ik wil, wat doe ik verkeerd?

code:
1
2
SELECT a.naam,a.score,b.naam,b.score FROM `tabel`a
LEFT JOIN `tabel`b ON a.score=b.score

  • pjotrk
  • Registratie: Mei 2004
  • Laatst online: 15-07-2025
Op deze manier krijg je sowieso maar 2 mensen met dezelfde score per rij, is dat ook wat je zou willen?. maw: Wat als er 10 mensen met de zelfde score zijn? Wat voor overzicht zou je er dan uit willen hebben?

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 19-05 21:24

NMe

Quia Ego Sic Dico.

code:
1
SELECT velden FROM tabel GROUP BY score

:Z

edit:
Fout gelezen dus.

[ Voor 23% gewijzigd door NMe op 13-11-2004 23:37 ]

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Verwijderd

Topicstarter
ik hoef alleen maar paartjes te hebben, dus mensen die dezelde score hebben vormen een paartje

als ik de volgende code in access uitvoer doet hij het wel, wat is er anders aan de MYSQL syntax?

code:
1
2
3
SELECT DISTINCT a.naam,a.score,b.naam,b.score FROM Tabel1 a
LEFT JOIN Tabel1 b ON a.score=b.score 
WHERE a.naam <> b.naam

Verwijderd

Topicstarter
NMe84 schreef op zaterdag 13 november 2004 @ 23:27:
code:
1
SELECT velden FROM tabel GROUP BY score

:Z
leuk je je gegaap, maar dat is niet wat ik vraag ... nu groupeert hij mooi maar laat geen paartjes zien

  • pjotrk
  • Registratie: Mei 2004
  • Laatst online: 15-07-2025
Verwijderd schreef op zaterdag 13 november 2004 @ 23:28:
ik hoef alleen maar paartjes te hebben, dus mensen die dezelde score hebben vormen een paartje
En als je het zo doet?

code:
1
2
3
SELECT a.naam, a.score, b.naam, b.score 
FROM Tabel1 a LEFT JOIN Tabel1 b ON (a.score = b.score)
WHERE a.id < b.id


Op deze manier krijg je als het goed is nooit twee keer hetzelfde lid als een paar en nooit een paar voor de tweede keer (omgekeerd).

Verwijderd

Topicstarter
pjotrk schreef op zaterdag 13 november 2004 @ 23:41:
[...]


En als je het zo doet?

code:
1
2
3
SELECT a.naam, a.score, b.naam, b.score 
FROM Tabel1 a LEFT JOIN Tabel1 b ON (a.score = b.score)
WHERE a.id < b.id


Op deze manier krijg je als het goed is nooit twee keer hetzelfde lid als een paar en nooit een paar voor de tweede keer (omgekeerd).
nope, enorm vaag wat hij doet, krijg nu weer iets anders vandaar de edit:

code:
1
2
3
4
5
6
Uw SQL-query is succesvol uitgevoerd.
 
SQL-query :
SELECT a.naam, a.score, b.naam, b.score 
FROM `kansloos` a LEFT JOIN `kansloos` b ON (a.score = b.score)
WHERE a.score < b.score


en vervolgens zie ik helemaal niets ..

in ACCESS doet hij het wel precies zoals we willen ..

[ Voor 43% gewijzigd door Verwijderd op 14-11-2004 00:06 ]


  • pjotrk
  • Registratie: Mei 2004
  • Laatst online: 15-07-2025
Verwijderd schreef op zaterdag 13 november 2004 @ 23:52:
[...]
en vervolgens zie ik helemaal niets ..
code:
1
2
3
SELECT a.naam, a.score, b.naam, b.score 
FROM Tabel1 a LEFT JOIN Tabel1 b ON (a.score = b.score)
WHERE a.id < b.id

zou geloof ik wel moeten werken.

maar (JOIN `kansloos` b ON (a.score = b.score) WHERE a.score < b.score) wordt lastig. "koppel de rijen aan elkaar waarbij a.score en b.score hetzelfde zijn, en geef daarvan weer alleen alle rijen waarbij a.score kleiner is dan b.score" :)

Verwijderd

Topicstarter
pjotrk schreef op zondag 14 november 2004 @ 00:14:
[...]


code:
1
2
3
SELECT a.naam, a.score, b.naam, b.score 
FROM Tabel1 a LEFT JOIN Tabel1 b ON (a.score = b.score)
WHERE a.id < b.id

zou geloof ik wel moeten werken.

maar (JOIN `kansloos` b ON (a.score = b.score) WHERE a.score < b.score) wordt lastig. "koppel de rijen aan elkaar waarbij a.score en b.score hetzelfde zijn, en geef daarvan weer alleen alle rijen waarbij a.score kleiner is dan b.score" :)
dit

code:
1
2
SELECT a.naam, a.score, b.naam, b.score 
FROM kansloos a LEFT JOIN kansloos b ON (a.score = b.score)


geeft dit

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
29
30
31
32
33
aura 66 aura 66 
Iris 26 Iris 26 
rene 26 rene 26 
rose 26 rose 26 
nienke 43 nienke 43 
syb 43 syb 43 
tristanoviz 10 tristanoviz 10 
floor 20 floor 20 
mims 33 mims 33 
mickey miek 33 mickey miek 33 
sjaak afhaak(cait) 33 sjaak afhaak(cait) 33 
roos 33 roos 33 
mirte 33 mirte 33 
sharon 16 sharon 16 
anneloes en steef 16 anneloes en steef 16 
Iris 26 Iris 26 
rene 26 rene 26 
rose 26 rose 26 
nienke 43 nienke 43 
syb 43 syb 43 
Iris 26 Iris 26 
rene 26 rene 26 
rose 26 rose 26 
Joyce 30 Joyce 30 
spongebob 30 spongebob 30 
yamila 30 yamila 30 
inkie 30 inkie 30 
maartje 40 maartje 40 
andrea (cait) 40 andrea (cait) 40 
thomas (cate love you) 40 thomas (cate love you) 40 
mims 33 mims 33 
mickey miek 33 mickey miek 33 
sjaak afhaak(cait) 33 sjaak afhaak(cait) 33

  • pjotrk
  • Registratie: Mei 2004
  • Laatst online: 15-07-2025
Net maar even hier getest:

code:
1
2
3
SELECT a.naam, a.score, b.naam, b.score 
FROM kansloos a LEFT JOIN kansloos b ON (a.score = b.score)
WHERE a.id < b.id

werkte wel maar gaf niet de namen zonder gelijke

code:
1
2
3
4
5
6
7
8
9
10
11
naam score naam score 
jan 5 jos 5 
jan 5 tries 5 
jan 5 pim 5 
jos 5 tries 5 
jos 5 pim 5 
tries 5 pim 5 
tim 6 pino 6 
klaas 8 mies 8 
klaas 8 kees 8 
mies 8 kees 8


deze wel
code:
1
2
3
4
5
6
SELECT a.naam, a.score, b.naam, b.score
FROM kansloos a
LEFT JOIN kansloos b ON ( a.score = b.score
AND a.id <> b.id ) 
WHERE a.id < b.id
OR b.id IS NULL


code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
naam score naam score 
jan 5 jos 5 
jan 5 tries 5 
jan 5 pim 5 
jos 5 tries 5 
jos 5 pim 5 
tries 5 pim 5 
tim 6 pino 6 
klaas 8 mies 8 
klaas 8 kees 8 
mies 8 kees 8 
els 9 NULL NULL 
bert 7 NULL NULL 
ernie 0 NULL NULL

[ Voor 29% gewijzigd door pjotrk op 14-11-2004 01:03 ]


Verwijderd

Topicstarter
pjotrk schreef op zondag 14 november 2004 @ 01:01:
Net maar even hier getest:

code:
1
2
3
SELECT a.naam, a.score, b.naam, b.score 
FROM kansloos a LEFT JOIN kansloos b ON (a.score = b.score)
WHERE a.id < b.id

werkte wel maar gaf niet de namen zonder gelijke

code:
1
2
3
4
5
6
7
8
9
10
11
naam score naam score 
jan 5 jos 5 
jan 5 tries 5 
jan 5 pim 5 
jos 5 tries 5 
jos 5 pim 5 
tries 5 pim 5 
tim 6 pino 6 
klaas 8 mies 8 
klaas 8 kees 8 
mies 8 kees 8


deze wel
code:
1
2
3
4
5
6
SELECT a.naam, a.score, b.naam, b.score
FROM kansloos a
LEFT JOIN kansloos b ON ( a.score = b.score
AND a.id <> b.id ) 
WHERE a.id < b.id
OR b.id IS NULL


code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
naam score naam score 
jan 5 jos 5 
jan 5 tries 5 
jan 5 pim 5 
jos 5 tries 5 
jos 5 pim 5 
tries 5 pim 5 
tim 6 pino 6 
klaas 8 mies 8 
klaas 8 kees 8 
mies 8 kees 8 
els 9 NULL NULL 
bert 7 NULL NULL 
ernie 0 NULL NULL
vreemd ik voer jouw query uit en ik krijg gewoon weer hetzelfde ... kan het te maken hebben met tabel type, primarykey, kolomtype?

code:
1
2
...
AND a.naam <> b.naam )

het vreemde is ook dat hij deze niet oppikt hij laat gewoon gelijke namen zien ..

[ Voor 7% gewijzigd door Verwijderd op 14-11-2004 11:38 ]


Verwijderd

Topicstarter
niemand weet waar het probleem in kan schuilen?
Pagina: 1