Du må være registrert og logget inn for å kunne legge ut innlegg på freak.no
X
LOGG INN
... eller du kan registrere deg nå
Dette nettstedet er avhengig av annonseinntekter for å holde driften og videre utvikling igang. Vi liker ikke reklame heller, men alternativene er ikke mange. Vær snill å vurder å slå av annonseblokkering, eller å abonnere på en reklamefri utgave av nettstedet.
  6 898
Hvis jeg har en tabell som ser slik ut:

navn | tlf nr | mobil | type
Kjell | 21111111 | 90000000 | kunde
espen | 23333333 | 91000000 | gjest
Kjell | 244444444 | 930000000 | kunde

Ønsker å slå sammen alle som har samme navn. Slik at tabellen blir:
(type trenger du ikke tenke på, et navn har alltid samme type)

navn | tlf nr | mobil | type
Kjell | 21111111, 244444444 | 90000000,93000000 | kunde
espen | 23333333 | 91000000 | gjest

finnes det noen lur måte å gjøre dette på?

Kan også klare meg fint med med å få en tabell som ser slik ut:
navn | tlf nr | mobil | type
Kjell | 21111111| 244444444 | 90000000 | 93000000 | kunde
espen | 23333333 | 91000000 | gjest

Trenger heller ikke være en tabell, men helt ok om jeg kan få en select funksjon som henter ut en nedlastbar csv fil.

Til nå har jeg bare kommet til:
SELECT navn, tlfnr, mobil, type, count(*)
FROM 0demo
GROUP BY navn

Men den gir meg bare
navn | tlf nr | mobil | type | Count(*)
Kjell | 21111111 | 90000000 | kunde | 2
espen | 23333333 | 91000000 | gjest | 1
du burde gå for en helt annen tabell-struktur om du får duplikater på denne måen.

La oss si du har mange brukere, og en bruker kan ha flere telefonnummer, da vil du ha en 1 til mange relasjon - noe som betyr du trenger 2 tabeller.

Personer:

Kode

ID | Navn  | type
1  | Kjell | kunde
2  | Espen | gjest
Telefonnummer

Kode

person_id | Telefonnummer
1         | 90000000
1         | 91000000
2         | 93000000
Dataen henter du da ut med join, som f.eks. om du ønsker alle telefonnymmer til kjell (altså person med id 1)

Kode

SELECT personer.navn, telefonnummer.telefonnummer
FROM personer
JOIN telefonnummer ON telefonner.person_id = personer.id
WHERE personer.id = 1
Generering fra SQL til CSV bør du så gjøre i ettertid (ikke veldig vanskelig, en løkke som går gjennom alle telefonnumer og legger til komma-separering)
Sist endret av etse; 2. august 2012 kl. 13:32.
Trådstarter
17 0
Takk, men skal hente ut info fra en eksisterende database. Da ønsker jeg å få alle tlfnr en person har på den personen, og helst slippe å sette dette sammen i excel eller noe etterpå.

Det er flere 1000 personer og opp til 15 forskjellige nr på hver person.
Først: Den som lagd databasen burde fått ris. Jeg liker virkelig ikke ting som bryter med 3NF standarden. Så den burde fikses.

Men uansett vanskelig å skrive ting direkte til CSV uten å vite hvilken SQL-database du bruker. Ulike databaser gjør det på forskjellige måter. Enkelte har mulighet til å skrive direkte til CSV-filer.

Men uansett: For å forenkle det hele: Har du mulighet til å kjøre et script som gjør om resultatene fra en spørring til CSV?
Trådstarter
17 0
Jeg får gjort om fra en spørring til csv.

Apache/2.2.22
MySQL klientversjon: 5.0.51a
phpMyAdmin 3.2.5
hva med noe slikt da:

Kode

SELECT navn, type, GROUP_CONCAT(telefon SEPARATOR  "," ) as telefon, GROUP_CONCAT(mobil SEPARATOR  "," ) as mobil
FROM kunder
GROUP BY navn
Sist endret av etse; 2. august 2012 kl. 14:09.
Trådstarter
17 0
Takk, en liten endring og det ser ut til å virke:

SELECT navn, type, GROUP_CONCAT(tlfnr SEPARATOR "," ), GROUP_CONCAT(mobil SEPARATOR "," )
FROM kunder
GROUP BY navn