webForumDet fria alternativet

Hämta från 3 olika tabeller i ett recordset och sortera!?

Databaser & SQL

3 svar · 259 visningar · startad av monAmour

Medlem sedan dec. 2002258 inlägg
Frågan#1

Okej nu ska jag försöka förklara mitt problem så förståligt som möjligt.
Jag har 3 olika tabeller som jag vill söka igenom med ett nyckelord.

Man kan säga att de ser ut så här:

Tabell 1 (persondata)
pId, firstname,lastname,email

Tabell 2 (utbildningsdata)
uId,pId,school,eduArea,exam

Tabell 3 (presentation)
prId,pId,company,position,website

Den första tabell är styrande och länkar till de två andra genom id-märket "pId". Nu vill jag kunna söka igenom alla 3 olika tabellerna efter data samtidigt och få ut ett begripligt recordset sorterat efter pId i tabell 1.
Hur gör jag detta utan att få t.ex. dubletter eller data från tabell 2 eller 3 utan någon koppling till tabell 1 osv?

(Jag arbetar med MySQL)

Medlem sedan dec. 200012 464 inlägg
#2

Varför ett recordset? utbildningsdata och presentation är ju inte relaterade.

select firstname,lastname,email,school,eduArea,exam
from t1 join t2 using (pid)
where <villkor>
select company,position,website
from t1 join t3 using (pid)
where <villkor>

Du kan ju använda en union om du absolut vill ha ett resultat.

Medlem sedan dec. 2002258 inlägg
#3

Hur använder jag en union? Det är ju så att jag vill visa allt i en träfflista på ett bra sätt. Och om jag har två olika resultat hur ska de då prioriteras?

Medlem sedan nov. 20017 144 inlägg
#4

Typ så här:

select firstname,lastname,email,school,eduArea,exam
from t1 join t2 using (pid)
where <villkor>
UNION ALL
select company,position,website,null,null,null
from t1 join t3 using (pid)
where <villkor>
247 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
122 ms — deklarationer (db)
0 ms — hämta statistik (cache)
122 ms — hämta tråd, inlägg och bilagor (db)
121 ms — ändringar (db)