Hur ska jag joina tabeller MYSQL?

Trädvy Permalänk
Medlem
Registrerad
Jun 2008

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)

Trädvy Permalänk
Medlem
Plats
i din garderob
Registrerad
Sep 2007

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

Bilanaloger är som Volvo — varenda svenne kör med dem

Trädvy Permalänk
Medlem
Plats
/bin/bash
Registrerad
Mar 2002

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

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

Trädvy Permalänk
Medlem
Registrerad
Jun 2008

@Teknocide:

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

Trädvy Permalänk
Medlem
Registrerad
Aug 2012

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

Trädvy Permalänk
Medlem
Registrerad
Jun 2008
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.

Trädvy Permalänk
Medlem
Plats
i din garderob
Registrerad
Sep 2007
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

Bilanaloger är som Volvo — varenda svenne kör med dem

Trädvy Permalänk
Medlem
Registrerad
Jun 2008
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.