Avatar billede Lasse Novice
17. juli 2000 - 21:27 Der er 16 kommentarer og
1 løsning

uddrage 2 forskellige værdier med samme navn

Det skal siges at det skal laves i PHP.

Ok, jeg vil gerne lave en forespørgsel, men har et problem.

Jeg har 3 tabeller:

1. Personens navn og REFERENCE TIL BY
kaldet byID
2. Personens uddannelse og REFERENCE TIL BY kaldet byID

3. Tabel med alle Byer hvor primærnøgle er byID.

Hvordan laver jeg én SQL sætning der uddriver ALLE oplysninger undtagen nøglerne. Dvs. Jeg skal have <b>BEGGE</b> byer med.
Avatar billede Lasse Novice
17. juli 2000 - 21:27 #1
nå, man kunne ikke bruge fed - ØV
Avatar billede Lasse Novice
17. juli 2000 - 21:28 #2
der er selvfølgelig også en relation mellem personens navn og personens uddannelse
Avatar billede erikjacobsen Ekspert
17. juli 2000 - 21:37 #3
Du skriver bare

  SELECT ... FROM tabel1,tabel2,tabel3 where tabel1.byid=tabel2.byid

osv. Altså hvis der er to felter med samme navn i to tabeller, skriver man bare tabellens
navn foran.
Avatar billede Lasse Novice
17. juli 2000 - 21:56 #4
nåh, men se her. Det er ikke lige sådan jeg mener:

Tre tabeller

person
  fornavn
  efternavn
  uddannelseID
  byID
uddannelse
  navn
  retning
  uddannelseID
  byID
byer
  bynavn
  postnr
  byID

Jeg skal have ALLE værdier ud undtagen fremmed- og primærnøgler.
MEEEEEEN..... byID(uddannelse.byid) - og dermed byen - hvor uddannelsen ligger er ikke den samme by(person.byid) som byen hvori personen bor i.

Hvordan henter man begge byer ud i SAMME SQL-sætning?
Avatar billede Lasse Novice
17. juli 2000 - 21:58 #5
jeg ved godt at, NÅR jeg gør det i PHP kan jeg lave det to gange - det kan brugeren ikke se - men jeg vil gerne have det i én.
Avatar billede erikjacobsen Ekspert
17. juli 2000 - 22:52 #6
Jeg fatter ikke hvad du mener.
Avatar billede Lasse Novice
17. juli 2000 - 23:00 #7
ok, her er det i en sql sætning.

select fornavn,efternavn,navn,retning,bynavn,postnr,bynavn,postnr from uddannelse,person,byer where uddannelse.byid=byer.byid and uddannelse.uddannelseid=person.uddannelseid and person.byid=byer.byid;

Som du ser skriver jeg bynavn og postnr 2 gange. Det er fordi der er 2 forskellige værdier af bynavn og postnr.

Check lige dette her eks:
person
  fornavn        =Anders
  efternavn      =Andersen
  uddannelseID  =1
  byID          =23
uddannelse
  navn          =KU
  retning        =statskundskab
  uddannelseID  =1
  byID          =25
byer
  bynavn        =København K
  postnr        =1100
  byID          =25

  bynavn        =Skodsborg
  postnr        =5600
  byID          =23


Kan du se hvad jeg mener nu?
Avatar billede erikjacobsen Ekspert
17. juli 2000 - 23:05 #8
Nemt nok. Det kan du ikke!
Avatar billede Lasse Novice
17. juli 2000 - 23:08 #9
det var også det jeg regnede med....
Avatar billede Lasse Novice
17. juli 2000 - 23:09 #10
så skal du jo have dine pointer
Avatar billede Lasse Novice
17. juli 2000 - 23:11 #11
Det er ikke så heldigt
Avatar billede Lasse Novice
17. juli 2000 - 23:12 #12
skal jeg så lave en forespørgsel for hver post jeg har hvor jeg driver den sidste data ud(den andet bynavn)?
Avatar billede erikjacobsen Ekspert
17. juli 2000 - 23:15 #13
Det var hurtigt accepteret. Måske en anden kunne - jeg er trods alt ikke nutidens Einstein ;-)) Men
jeg tror ikke du kan i MySql som mangler nogle af de mere "avancerede" ting i Sql.

Du kan vel lave to SELECT-er, hvor hver joiner med bytabellen, og begge er åbne samtidig, og hvor
du så langsomt spadserer ned i begge parallelt. Det tror jeg er meget smartere end at gøre noget
for hver post.
Avatar billede Lasse Novice
17. juli 2000 - 23:43 #14
ehh, jeg er ikke lige total ferm mht.  sql. Kunne du lige lave et lille eks med select inde i select?
Avatar billede Lasse Novice
17. juli 2000 - 23:44 #15
Hvorfor jeg accepteret så hurtigt var fordi du svarede så specifikt... også kender jeg jo kvaliteten af dine svar fra tidligere :-)
Avatar billede erikjacobsen Ekspert
18. juli 2000 - 00:44 #16
Tjah ... kvalitet .... hmm ...

Det er lidt sent i aften - så ikke lige nu. Om et par dage ... du er velkommen til at minde
mig om det i en email.
Avatar billede erikjacobsen Ekspert
19. juli 2000 - 19:54 #17
Jeg kom nemlig i tanker om en lille detalje, som jeg sjældent har brugt, men som
præcis løser dit problem.
Betragt følgende MySql-dialog, så har du løsningen. Og jeg har allerede fået pointene - så det er
jo godt nok:

Query OK, 1 row affected (0.11 sec)

mysql> create table byer ( id int(11), navn char(100)) ;
Query OK, 0 rows affected (0.06 sec)

mysql> create table person ( idp int(11), fornavn char(10), fby int(11), dby int (11));
Query OK, 0 rows affected (0.00 sec)

mysql> insert into byer values (1,'Horsens');
Query OK, 1 row affected (0.11 sec)

mysql> insert into byer values (2,'Aarhus');
Query OK, 1 row affected (0.00 sec)

mysql> insert into person values (1,'Erik',1,2);
Query OK, 1 row affected (0.00 sec)

mysql> select * from person,byer as by1,byer as by2 where fby=by1.id and dby=by2.id;

+------+---------+------+------+------+---------+------+--------+
| idp  | fornavn | fby  | dby  | id  | navn    | id  | navn  |
+------+---------+------+------+------+---------+------+--------+
|    1 | Erik    |    1 |    2 |    1 | Horsens |    2 | Aarhus |
+------+---------+------+------+------+---------+------+--------+
1 row in set (0.11 sec)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester