WN

WN (https://www.wn.se/forum/index.php)
-   Serversidans teknologier (https://www.wn.se/forum/forumdisplay.php?f=4)
-   -   Mysql: Db hämtar från annan db. Hur? (https://www.wn.se/forum/showthread.php?t=1045910)

clirre 2011-01-16 15:30

Mysql: Db hämtar från annan db. Hur?
 
Hej,

Jag har ett problem som kräver lite mer än vad mina Mysql-kunskaper tillåter.

Jag har två tabeller: Rutter och Destinationer.

Rutter:
RuttFran
RuttTill

Destinationer:
DestinationID
DestinationLand

Där RuttFran samt RuttTill matchas av DestinationID. Exempelutdrag:

Rutter
Stockholm, Borås
Stockholm, Göteborg
Jönköping, Köpenhamn
Berlin, Athen

DestinationID,
Stockholm, Sverige
Berlin, Tyskland
Athen, Grekland

Nu vill jag göra en utläsning som läser ut alla distinkta landkopplingar som finns, dvs:

Sverige - Sverige
Sverige - Danmark
Tyskland - Grekland

och alltså inte alla fyra:

Sverige - Sverige
Sverige - Sverige
Sverige - Danmark
Tyskland - Grekland

Det är alltså ett tudelat problem:

#1. Hämta landsnamn för respektive Rutt-destination.
#2. Isolera alla unika landskopplingar.

Går det att göra med mysql bara eller måste jag gå via php? Vad ska jag googla efter isf?

Tack på förhand!

MMC 2011-01-16 17:10

En lösning:

Kod:

SELECT
    DISTINCT(CONCAT(FranDest.Land, TillDest.Land))
FROM Rutter
LEFT JOIN Destinationer AS TillDest
    ON TillDest.ID = Rutter.RuttTill
LEFT JOIN Destinationer AS FranDest
    ON FranDest.ID = Rutter.RuttFran

Gissar att datan inte ändras så ofta så att det går att cacha resultatet av frågan, annars skulle jag avnormaliserat databasen för att få en enklare fråga.

Conny Westh 2011-01-16 21:09

Det skulle vara fullkomligt vansinnigt att denomalisera databasen för ett sånt här problem, det strider mot alla grundläggande metoder att jobba med databaser.

Det skulle vara helt fel sätt att angripa problemet och att prestandaoptimera något som inte behöver prestandaoptimeras.

Se till att ha vettiga index så går en sån fråga blixtsnabbt.

clirre 2011-01-17 05:53

Ett par timmar senare lyckades jag lösa det på ett förmodligen alldeles för komplicerat sätt med temporary tables osv. Tack för all hjälp!


Alla tider är GMT +2. Klockan är nu 04:47.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson