webForumDet fria alternativet

Hämta data från två tabeller med en SQL-Sats

Databaser & SQLur Databashanterare & SQL

10 svar · 485 visningar · startad av tillmar

tillmarMedlem sedan sep. 2002928 inlägg
#1

Hej

Ska försöka formulera mig rätt nu... :r

Jag har ett Id-nummer i en session av namnet sess_id, och det jag vill åstakomma är att jag från tabellen "friends" ska plocka ut datan från kolumnen user2 där user1 är lika med sess_id.

Och sedan hämnta ut datan i kolumnen username i tabellen members där Id = user2.

Det jag i slutändan vill kunna skriva ut är id-nummret och Användarnamnet, jag har hört detta ska gå att göra i enfråga mot databasen istället för 2 med hjälp av Inner Join. Har sökt här men blir inte klokare för det.

Skulle vara snällt om någon kunde skriva frågan mot databasen och förklara vad dom olika delarna gör?

Och gärna hur utskriften sker?

Tack på förhand :)

Mvh Tillmar

Peter SMedlem sedan dec. 20025 483 inlägg
#2
select m.id
     , m.username
  from members m
inner
  join friends f
    on m.id = f.user2
   and f.user1 = $sess_id

Med ovanstående hämtas fälten id och username från members där id är lika med fältet user2 i friends och user1 är lika med sess_id.

Hur du hämtar och skriver ut resultatet kan du se här (du skriver ej vilket DBMS, så jag utgår från MySQL).

tillmarMedlem sedan sep. 2002928 inlägg
#3

Du har helt rätt jag kör MySQL.

Okej, jag vet hur man skriver ut annars. Så om jag sparar utskriftdatan i en vektor som heter "ar" så blir skillnaden bara att jag skriver $ar['m.username']

Och då hänvisar m till tabellen members och f hänvisar till tabellen friends, har jag förstått det rätt då?

Peter SMedlem sedan dec. 20025 483 inlägg
#4

Japp!

tillmarMedlem sedan sep. 2002928 inlägg
#5

Tackar för hjälpen det funkar galant :D

NiklassonMedlem sedan nov. 2000857 inlägg
#6

Flyttas från PHP..

tillmarMedlem sedan sep. 2002928 inlägg
#7

Om jag nu kör denna kod så plockas ju username och id från members ut.

select m.id
     , m.username
  from members m
inner
  join friends f
    on m.id = f.user2
   and f.user1 = $sess_id

Men om jag skulle vilja hämnta ut data från friends med, låt säga ett fält som heter id där i med. Hur går jag tillväga då? :stud

Peter SMedlem sedan dec. 20025 483 inlägg
#8

Då gör vi så här:

select m.id
     , m.username
     [red], f.id[/red]
  from members m
inner
  join friends f
    on m.id = f.user2
   and f.user1 = $sess_id

:)

tillmarMedlem sedan sep. 2002928 inlägg
#9

Det var ett snabbt svar :)

Självklart är det så.
Testade det själv förut men tror jag glömde avskilja med kommatecken(,). :OO

Men när jag ska skriva ut resultaten hur skiljer jag då på id från members och id från friends?
Skickar med lite kod.

På första echo vill jag skriva ut id från members
Och på andra id från friends.

<?php
$result = mysql_query($query);
while($ar = mysql_fetch_array($result))
{
	echo "<a href=\"profil.php?id=".$ar['id']."\">".$ar['username']."</a> ";
	echo "<a href=\"friends.php?tabort&id=".$ar['id']."\">X</a><br>";
}
?>
Peter SMedlem sedan dec. 20025 483 inlägg
#10

Du kan göra på tre sätt:

echo $row["m.id"];
select [red]m.id as memberid[/red]
     , m.username
     [red], f.id as friendid[/red]
  from members m
inner
  join friends f
    on m.id = f.user2
   and f.user1 = $sess_id

echo $row["memberid"];
echo $row[0];
tillmarMedlem sedan sep. 2002928 inlägg
#11

Exempel nr 1 trodde jag skulle gå ,men får felmeddelande på den.

Dock fungerar exempel nr 2 perfekt.

Får tacka ennu en gång ;)

Accepterar detta som slutgiltigt svar, så får vi se ifall det dyker upp fler frågor från mig som passar in här ;)

137 ms totalt · 3 externa anrop · v20260731065814-full.29ac60f6
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
133 ms — hämta tråd, inlägg och bilagor (db)