Just nu i M3-nätverket
Jump to content

Hämta värden från olika tabeller?


Mossberg

Recommended Posts

Hepp!

 

Behöver hämta alla värden från en tabell o samtidigt skulle jag behöva hämta ett värde från Tabell2 utifrån ett värde i Tabell1.

 

Alltså ung:

Hämta alla kolumner från Tabell1 där ID=1...

...och hämta värdet i kolumnen 'namn' i Tabell2 där ID är detsamma som 'namn_id' i tabell1

 

Har fått fram något i stil med:

"[color="#0000ff"]SELECT[/color] * [color="#0000ff"]FROM[/color] user [color="#0000ff"]WHERE[/color] ID = [color="#ff0000"]'1'[/color] 
[color="#0000ff"]AND[/color] ([color="#0000ff"]SELECT[/color] Name [color="#0000ff"]FROM[/color] country [color="#0000ff"]WHERE[/color] ID=[color="#ff0000"]'20'[/color])"

 

...men funkar inte.

 

Har även suttit med JOIN o UNION samt Subquery (se ovan) men jag får det inte att funka på något vis...någon som kan (är helt körd på sånt här själv)?

 

Alternativt kan ID för Tabell2 sättas med cookie, vilket som, bara det går att få ut 'namn'-värdet.

 

Poäng som vanligt till lösning/Henrik

 

 

Link to comment
Share on other sites

Tack för svar men får det inte att funka ändå.

Såhär ser det alltså ut nu:

"[color="#0000ff"]SELECT[/color] * [color="#0000ff"]FROM[/color] user [color="#0000ff"]WHERE[/color] user.ID = [color="#ff0000"]'1'[/color] JOIN country [color="#0000ff"]ON[/color] user.CountryID = country.ID"

 

Felmed:

[log]You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'JOIN country ON user.CountryID = country.ID' [/log]

 

Är det mer jag måste göra utöver att köra JOIN direkt i koden, måste jag fixa nån relation eller nåt?

 

Hjälp/Henrik

 

Link to comment
Share on other sites

user är ett reserverat ord i SQL, test att sätta det inom [], alltså:

 

"SELECT * FROM [user] WHERE [user].ID = '1' JOIN country ON [user].CountryID = country.ID"

 

 

Link to comment
Share on other sites

Mr Andersson råkade byta plats på where och join. Är ID en sträng? Om det är ett tal (vilket det bör vara) ska det inte vara ' runt.

[color="#0000ff"]SELECT[/color] * [color="#0000ff"]FROM[/color] user LEFT [color="#0000ff"]OUTER JOIN[/color] country [color="#0000ff"]ON[/color] user.CountryID = country.ID [color="#0000ff"]WHERE[/color] user.ID = 1

mvh

Olle

 

Link to comment
Share on other sites

Ok, har provat men blir samma fel.

 

Vad innebär det att det är reserverat av SQL, bör man inte använda det som ett tabellnamn då?

 

Tycker det är skumt det här, vad f-n är fel..

 

/Henrik

 

Link to comment
Share on other sites

Vad innebär det att det är reserverat av SQL, bör man inte använda det som ett tabellnamn då?

 

Reserverade ord är såna som finns i SQL-språket och det blir bara krångligt om man använder såna till annat. Det är fullt möjligt, men sååå jobbigt....

 

Förövrigt bör du alltid sätta prefix på egna objekt, tex tb för tabell, alltså tbUser etc. Då kan du enkelt se vad som är vad.

 

 

 

Link to comment
Share on other sites

Ok, ska ta o fixa till det där med namn.

 

Sen en fråga till:

Är tabellerna begränsade i utrymme?!

När jag kollar db'en Administratorn så står Data length i 256kB i min country-tabell, o enligt indikatorn verkar den vara på väg att vara full, kan det vara så?

 

/Henrik

 

Link to comment
Share on other sites

Är tabellerna begränsade i utrymme?!

 

Kan jag inte tänka mig, däremot allokeras bara så mycket utrymme som behövs.

 

 

 

 

Link to comment
Share on other sites

Tillexempel:

 

select * from tabellen where (id = 1) and ((aa = 1) or (bb = 3))

 

Man använder paranteser för att beskriva hur de logiska uttrycken ska fungera.

 

Följande ger tre olika resultat, även om både villkor och operation är desamma:

 

id = 1 and aa = 1 or bb = 3

 

(id = 1) and ((aa = 1) or (bb = 3))

 

((id = 1) and (aa = 1)) or (bb = 3)

 

 

 

Link to comment
Share on other sites

Ok, kan jag även skriva:

id = 1 and aa = 1 and bb = 3 and cc = 4

 

japp, det går bra.

Just i det fallet kommer inte paranteser att göra någon skillnad eftersom det bara finns AND.

 

Du kan även använda IN, men det tar lite extra prestanda. Alltså:

 

SELECT blaaaaa.... WHERE id IN (1,2,3,4,5)

 

eller

 

SELECT blaaaaa... WHERE id IN (select ID FROM Folk WHERE kompis = 1)

 

 

 

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.



×
×
  • Create New...