Finne dobble verdier i en database

Diskusjoner som omhandler databaser og SQL postes her.

Finne dobble verdier i en database

Innlegg newbie » 22.10.2006 0:33

Heisann!

Jeg holder på med en liten greie som skal egentlig være litt ren statestikk til hjelp for min egen del.

Jeg har et brukersystem som registerer IP, mail, info, navn osvosv. Slik systemet er satt opp, så er det fullt mulig å ha samme ip på 2 brukere (f.eks det er 2 brødre som er registrert), men jeg vil gjerne ha en oversikt på det. Tenkte å sette opp en sql-spørring som henter ut alle folka fra databasen, og en while-løkke i php som løper igjennom og skriver ut alle IP-adresser som er registrert minst 2 ganger. Så kan jeg i ettertid bare enkelt kjøre en spørring på hvem den IPadressen er registrert på...

Er dette mulig å gjøre i en og samme SQL-spørring, eller MÅ jeg ty til Php?
I såfall, er det smart å sette opp en array som IPen lagres i om den er registrert flere ganger alt?

Håper på konstruktivt svar, og muligens også en løsning :wink:

På forhånd takk
newbie
newbie
Nytt medlem
 
Innlegg: 11
Registrert: 26.05.2006 8:21

Innlegg mikaelb » 22.10.2006 1:31

Hei!

Det du er ute etter er altså finne de som ikke er unike. Da kan du gjøre noe ála dette:

Kode: Merk alt
SELECT `ip`, COUNT(*) as `number`
FROM `table`
GROUP BY `ip`
HAVING `number` > 1
MetaTune - PHP Wrapper for Spotify Metadata API
http://code.google.com/p/metatune/
Brukerens avatar
mikaelb
Seniormedlem
 
Innlegg: 2053
Registrert: 28.06.2005 10:50
Bosted: Trondheim

Innlegg newbie » 22.10.2006 1:42

Funka flott! :D Tusen hjertelig takk

newbie
newbie
Nytt medlem
 
Innlegg: 11
Registrert: 26.05.2006 8:21

Innlegg mikaelb » 22.10.2006 1:54

Bare hyggelig, så sent på kveldstidene.
MetaTune - PHP Wrapper for Spotify Metadata API
http://code.google.com/p/metatune/
Brukerens avatar
mikaelb
Seniormedlem
 
Innlegg: 2053
Registrert: 28.06.2005 10:50
Bosted: Trondheim

Innlegg newbie » 22.10.2006 6:24

Nytt problem... jeg har en slags rapportering av spillte kamper, og ønsker å få frem om noen av de som rapporterer sitter på samme IP.
Har en tabell med 4 felt: ID, Vinner, Taper og IPpåTaperen.

Mitt problem består av at jeg vil finne ut om den registrerte IPpåTaperen har flere ulike Tapere. Dette skulle være grei skuring med den forrige spørringa, hadde det ikke vært for at IPen og Taperen forekommer mange ganger i samme tabell.

eksempeltabell:

1 - Kari - Per - 192.168.0.1
2 - Kari - Per - 192.168.0.1
3 - Per - Kari - 127.0.0.1
4 - Per - Petter - 127.0.0.1

Jeg vil se at Kari og Petter sitter på samme IP ved hjelp av en spørring som henter ut hvor mange som sitter på samme IP og hva den Unike IPen er.
ER det mulig?

PÅ forhånd takk

newbie
newbie
Nytt medlem
 
Innlegg: 11
Registrert: 26.05.2006 8:21

Innlegg mikaelb » 23.10.2006 23:47

Hei, og beklager supersent svar.
Glemte helt av deg her, da jeg leste tråden og hadde ikke tid til å svare deg der og da.


Noe ála dette vil fungere:
Kode: Merk alt
SELECT COUNT(*)
FROM `battles` b
WHERE `b.winner` = 'Kari'
  AND `b.loser` = 'Per'
  AND `b.loser_ip` = (SELECT `a.ip` FROM `users` a WHERE `a.user` = `b.winner`)


Så da er resultatet av den der 1 om de har lik, og 0 om de ikke er lik


LYKKE Til'!


Edit: Mulig du gjør det bedre med join her, enn subqueries.
MetaTune - PHP Wrapper for Spotify Metadata API
http://code.google.com/p/metatune/
Brukerens avatar
mikaelb
Seniormedlem
 
Innlegg: 2053
Registrert: 28.06.2005 10:50
Bosted: Trondheim

Innlegg tt86 » 25.10.2006 21:36

mikaelb skrev:Hei!

Det du er ute etter er altså finne de som ikke er unike. Da kan du gjøre noe ála dette:

Kode: Merk alt
SELECT `ip`, COUNT(*) as `number`
FROM `table`
GROUP BY `ip`
HAVING `number` > 1


Da får man bare hvordan ip adresser som er flere av.
Hvordan får man vist alle ip adresser?

Når jeg bruker koden i sql, får jeg opp at nummeret er mere enn 2 stk, men ip adressen vises bare en gang.
zup ppl?
tt86
Medlem
 
Innlegg: 309
Registrert: 25.11.2005 20:22
Bosted: Tromsø

Innlegg Hellkeepa » 25.10.2006 23:00

HELLo!

Hva om du fjerna siste linje i den koden..? Prøv det, og se hva som skjer.
Lønner seg å lese koden litt, og tenke gjennom hva som står der. ;)

Happy codin'!
Takker til FagSoft for hosting av Postal tabellene
Anbefalt lesning for alle: How to ask questions the smart way
Brukerens avatar
Hellkeepa
Moderator
 
Innlegg: 7616
Registrert: 08.10.2005 19:48
Bosted: Norge (somewhere)

Innlegg tt86 » 25.10.2006 23:11

funker ikke, står fortsatt at "nummeret" er f.eks 3, og bare en av den vises. Når jeg søker etterpå hvor ip adressen er lik *den ip adressen jeg hentet* , så viser den brukernavnene til de som har samme.
zup ppl?
tt86
Medlem
 
Innlegg: 309
Registrert: 25.11.2005 20:22
Bosted: Tromsø

Innlegg mikaelb » 25.10.2006 23:24

Sitter her og river av meg det lille håret jeg har igjen på å finne en løsning. Ikke bare at jeg skal finne løsningen, men før noen (eventuelt Hellkeepa) gjør det før meg. :roll:

Går ut i fra at ingen av disse fungerer med deg heller?

Kode: Merk alt
SELECT user FROM users  WHERE ip IN (SELECT ip FROM users GROUP BY ip HAVING COUNT(*) > 1)


Kode: Merk alt
SELECT u.user FROM users u INNER JOIN
(SELECT ip FROM users GROUP BY ip HAVING COUNT(*) > 1) d ON u.ip = d.ip


EDIT:
Begge disse funker fint! Klarte det til slutt, så lenge jeg lar være å tabbe meg ut på PHP-fronten.
MetaTune - PHP Wrapper for Spotify Metadata API
http://code.google.com/p/metatune/
Brukerens avatar
mikaelb
Seniormedlem
 
Innlegg: 2053
Registrert: 28.06.2005 10:50
Bosted: Trondheim


Gå til SQL og databaser

Hvem er i forumet

Brukere som leser i dette forumet: Ingen registrerte brukere og 0 gjester