Gå til innhold

Hente verdier fra flere tabeller mysql.


Anbefalte innlegg

Heisann. Jeg driver å skal lage en søkemotor til ett prosjekt jeg driver med. Jeg tenkte at siden forumet nå begynner å ta form, er det forhåpentlig vis ikke lenge til søkemotor blir en etterlengtet funksjon.

Det jeg sliter med er at jeg til nå kun har hatt spørringer mot en enkelt tabell, med untakk av ett sted, hvor jeg hadde spørring til to. Der brukte jeg LEFT JOIN og noe som het ON. Jeg forstår ikke helt hvordan disse to fungerer, og håper det finnes noen enklere måter å spørre til flere tabeller på.

 

Jeg er fire tabeller. En for brukernavn, en for kategorier, en for emner, og en for innlegg.

inlegg har foreign keys i bruker og emne.

emne har foregin keys i bruker og kategorier.

 

Det jeg vil er å søke på alle emner, alle poster og alle brukernavn. (sistnevnte brukernavn, er ikke veldig viktig, da jeg ikke har fått satt opp brukerprofiler enda).

Lenke til kommentar
Videoannonse
Annonse

Tabell_Person

ID (INT AUTO_INCREMENT PRIMARY KEY)

Fornavn (VARCHAR 20)

Etternavn (Varchar 20)

 

Tabell_Telefon

ID (INT AUTO_INCREMENT PRIMARY KEY)

PersonID (INT)

Type (VARCHAR 20)

Telefon (VARCHAR 20)

 

Hvis du har de to tabellene over og skal finne alle telefonnummer til person nummer $persid så er spørringen

 

SELECT * FROM Tabell_Person

LEFT JOIN Tabell_Telefon ON Tabell_Telefon.PersonID = Tabell_Person.ID

WHERE Person.ID = $persid

 

Du vil da få et resultat med for eksempel følgende verdier

 

Rad1: 12, 'Tester', 'Testersen', 11, 12, 'Mobil', '99 12 34 56'

Rad2: 12, 'Tester', 'Testersen', 12, 12, 'Jobb', '55 12 34 56'

Rad3: 12, 'Tester', 'Testersen', 13, 12, 'Hjem', '22 12 23 45'

 

Som du ser så inneholder radene alle feltene i rekkefølgen de er definert over. Det "ON" gjør er å definere forholdet mellom de to tabellene med uttrykket etter. Altså må Tabell_Telefon.PersonID være lik Tabell_Person.ID for at telefonnumeret skal bli tatt med.

 

Håper det hjelper (og er riktig da jeg tok dette rett fra hukommelsen) :D

Lenke til kommentar

SELECT noe_fra_tabell1, noe_fra_tabell2, mer_fra_tabell2 FROM tabell1, tabell2, tabell3;

 

Dette henter ihvertfall ut fra forskjellige tabeller.

 

For å søke kan du bruke

SELECT(whatever)FROM(whatever)WHERE emne LIKE %søketekst%;

Downside her er at denne vil finne f.eks "Biler" når du bare søker på "il". Sikkert en lett og mye smartere måte å gjøre dette på, men gidder ikke google det :p

 

EDIT: Karen over meg har mye mer peil. Hør på han :blush:

Endret av Leaκim
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...