Hur ska jag joina tabeller MYSQL?

Permalänk
Medlem

Hur ska jag joina tabeller MYSQL?

Hej! Har försökt ett flertal gånger nu, antingen blir databasen överbelastad eller så skriver den inte ut någonting.

Vill ju joina flera tabeller men blir fel.

Detta fungerar, dock vill jag ju inte ha med id i utskriften, utan att det ska endast finnas ( a.namn, a.gatuadress, a.postnummer, b.ägarnamn, c.kommunnamn, d.länsnamn, e.postort i utksriften och testar jag utan id så får jag inget resultat):
SELECT a.namn, a.gatuadress, a.postnummer, a.apoteksid, b.ägarid, b.ägarnamn, c.kommunkod, c.kommunnamn, d.länskod, d.länsnamn, e.postort, e.postnr
FROM apotek a, ägare b, kommun c, län d, postadress e
WHERE c.kommunkod = d.länskod
AND a.postnummer = e.postnr

*De understrykna är primärnycklarna.

TABELL apotek
SELECT * from apotek
apoteksidint(11) auto_increment*

namn varchar(75)
utf8_swedish_ci

gatuadress varchar(100)
utf8_swedish_ci

postnummer char(6)
utf8_swedish_ci

tillståndsdatum date

länskod int(11)

kommunkod int(11)

ägarid int(11)
-------------------------------

TABELL kommun
SELECT * from kommun

länskod int(11)*

kommunkod int(11)*

kommunnamn varchar(50)

--------------------------------

TABELL län
SELECT * from län
länskod int(11)*

länsnamn
varchar(50)

--------------------------------

TABELL postadress
SELECT * from postadress

postnr char(6)*
postort varchar(50)

---------------------------------

TABELL ägare
SELECT * from ägare
ägarid int(11)*

ägarnamn varchar(100)

Permalänk
Medlem

@Forbizzn
Vad är det du vill ha ut från databasen?

Visa signatur

Kom-pa-TI-bilitet

Permalänk
Medlem

Skulle nog rekomendera att du faktiskt använder joins. Ursäkta länk-posten men http://www.w3schools.com/sql/sql_join.asp

Visa signatur

Cisco - Linux - VMWare
-- Citera mig om ni vill få återkoppling --

Permalänk
Medlem

@Teknocide:

a.namn, a.gatuadress, a.postnummer, b.ägarnamn, c.kommunnamn, d.länsnamn, e.postort enbart

Permalänk
Medlem

Skulle läsa på mer om join, om jag förstår dig rätt så saknar du lite kopplingar mellan dina tabeller och det blir därför väldigt intressanta resultat. Dock inte de du vill ha

SELECT a.namn, a.gatuadress, a.postnummer, a.apoteksid, b.ägarid, b.ägarnamn, c.kommunkod, c.kommunnamn, d.länskod, d.länsnamn, e.postort, e.postnr
FROM apotek a
JOIN postadress e ON a.postnummer = e.postnummer
JOIN ägare b ON (saknar koppling i ditt exempel)
JOIN kommun c ON (saknar koppling i ditt exempel)
JOIN län d ON d.länskod = c.kommunkod

En sida jag läser på ibland när jag måste vara i sql o försöka lösa frågor
http://www.dofactory.com/sql/join

Permalänk
Medlem
Skrivet av TarHiero:

Skulle läsa på mer om join, om jag förstår dig rätt så saknar du lite kopplingar mellan dina tabeller och det blir därför väldigt intressanta resultat. Dock inte de du vill ha

SELECT a.namn, a.gatuadress, a.postnummer, a.apoteksid, b.ägarid, b.ägarnamn, c.kommunkod, c.kommunnamn, d.länskod, d.länsnamn, e.postort, e.postnr
FROM apotek a
JOIN postadress e ON a.postnummer = e.postnummer
JOIN ägare b ON (saknar koppling i ditt exempel)
JOIN kommun c ON (saknar koppling i ditt exempel)
JOIN län d ON d.länskod = c.kommunkod

En sida jag läser på ibland när jag måste vara i sql o försöka lösa frågor
http://www.dofactory.com/sql/join

Tack för tipset, dock förstår jag inte riktigt hur jag ska kunna skapa en koppling om det inte finns något gemensamt. Verkar som jag kan använda mig av left eller right join men då verkar null-värden komma med.

Permalänk
Medlem
Skrivet av Forbizzn:

@Teknocide:

a.namn, a.gatuadress, a.postnummer, b.ägarnamn, c.kommunnamn, d.länsnamn, e.postort enbart

Jag tänkte mig ett svar mer i stil med "Hela adressen till ett apotek där alla värden är satta" eller något i den stilen. Testa den här hursomhelst:

select a.namn, a.gatuadress, a.postnummer, k.kommunnamn, l.länsnamn, pa.postort from apotek a inner join kommun k on k.länskod = a.länskod and k.kommunkod = a.kommunkod inner join län l on l.länskod = a.länskod inner join postadress pa on pa.postnr = a.postnummer inner join ägare ä on ä.ägarid = a.ägarid

Visa signatur

Kom-pa-TI-bilitet

Permalänk
Medlem
Skrivet av Teknocide:

Jag tänkte mig ett svar mer i stil med "Hela adressen till ett apotek där alla värden är satta" eller något i den stilen. Testa den här hursomhelst:

select a.namn, a.gatuadress, a.postnummer, k.kommunnamn, l.länsnamn, pa.postort from apotek a inner join kommun k on k.länskod = a.länskod and k.kommunkod = a.kommunkod inner join län l on l.länskod = a.länskod inner join postadress pa on pa.postnr = a.postnummer inner join ägare ä on ä.ägarid = a.ägarid

Tack, förstod hur du tänkte.