Ved hjelp av MySQL Joins

Så langt har vi bare fått data fra ett bord om gangen. Dette er greit for enkel tar, men i de fleste virkelige verden MySQL bruk, vil du ofte trenger å få data fra flere tabeller i en enkelt spørring.

Du kan bruke flere bord i ditt enkelt SQL-spørring. Det handler om å bli med i MySQL refererer til knusende to eller flere tabeller i en enkelt tabell.

Du kan bruke sammenslåinger SELECT, UPDATE og DELETE utsagn for å bli med MySQL tabeller. Vi vil se et eksempel på VENSTRE BLI også som er forskjellig fra enkle MySQL BLI

Bruke tiltrer i Command Prompt.

Anta at vi har to tabeller tcount_tbl Hotell og tutorials_tbl
, i tutorials. En fullstendig liste er gitt nedenfor:

Eksempel:

Prøv følgende eksempler:
root @ host # mysql -u root -p passord; Skriv inn passord: ***** ** mysql > bruke Tutorials; Database changedmysql > SELECT * FROM tcount_tbl; + ----------------- + ---------------- + | tutorial_author | tutorial_count | + ----------------- + ---------------- + | mahran | 20 || Mahnaz | NULL || Jen | NULL || Gill | 20 || John Poul | 1 || Sanjay | 1 | + ----------------- + ---------------- + 6 rader i sett (0,01 sek) mysql > SELECT * from tutorials_tbl; + ------------- + ---------------- + ------------- ---- + ----------------- + | tutorial_id | tutorial_title | tutorial_author | submission_date | + ------------- + ---------------- + ---------------- - + ----------------- + | 1 | Lær PHP | John Poul | 2007-05-24 || 2 | Lær MySQL | Abdul S | 2007-05-24 || 3 | JAVA Tutorial | Sanjay | 2007-05-06 | + ------------- + ---------------- + ------------ ----- + ----------------- + 3 rader i sett (0,00 sek) mysql >

Nå kan vi skrive en SQL-spørring til å bli med disse to tabellene. Dette søket vil velge alle forfatterne fra tabellen tutorials_tbl Hotell og vilje pickup tilsvarende antall tutorials fra tcount_tbl
.mysql > VELG a.tutorial_id, a.tutorial_author, b.tutorial_count - > Fra tutorials_tbl en, tcount_tbl b - > HVOR a.tutorial_author = b.tutorial_author; + ------------- + ----------------- + -------- -------- + | tutorial_id | tutorial_author | tutorial_count | + ------------- + ----------------- + --------------- - + | 1 | John Poul | 1 || 3 | Sanjay | 1 | + ------------- + ----------------- + --------------- - + 2 rader i sett (0,01 sek) mysql >
Bruke tiltrer i PHP Script:

Du kan bruke noen av de ovennevnte SQL-spørring i PHP-skript. Du trenger bare å passere SQL-spørring i PHP-funksjonen mysql_query () Hotell og da vil du hente resultater i vanlig måte

Eksempel:.

Prøv følgende eksempel: < ? br> < php $ dbhost = 'localhost: 3036'; $ dbuser = 'root'; $ dbpass = 'rootpassword'; $ conn = mysql_connect ($ dbhost, $ dbuser, $ dbpass); if ($ conn!) {die ('Kunne ikke koble til:' mysql_error ().);} $ sql = "SELECT a.tutorial_id, a.tutorial_author, b.tutorial_count Fra tutorials_tbl en, tcount_tbl b WHERE a.tutorial_author = b.tutorial_author '; mysql_select_db ( 'Tutorials'); $ retval = mysql_query ($ sql, $ conn); if ($ retval)! {die ('Kunne ikke få data:'. mysql_error ());} while ($ row = mysql_fetch_array ($ retval, MYSQL_ASSOC)) {echo "Forfatter: {$ row ['tutorial_author']} < br >". "Count: {$ row ['tutorial_count']} < br >". "Tutorial ID: {$ row ['tutorial_id']} < br >". "-------------------------------- < br >";} echo "Hentet de data vellykket \\ n"; mysql_close ? ($ Oppkobling); >
MySQL VENSTRE BLI:

En MySQL forlot delta er forskjellig fra en enkel delta. En MySQL VENSTRE BLI gir ekstra hensyn til bordet som ligger på venstre side.

Hvis jeg gjør en LEFT JOIN, jeg får alle postene som svarer på samme måte og i tillegg får jeg en ekstra rekord for hver enestående rekord i venstre tabellen for å bli med - og dermed sikre (i mitt eksempel) at hver FORFATTEREN får en omtale:

Eksempel:

Prøv følgende eksempel for å forstå VENSTRE BLI:
root @ host # mysql -u root -p passord; Skriv inn passord: ******* mysql > bruke Tutorials; Database changedmysql > VELG a.tutorial_id, a.tutorial_author, b.tutorial_count - > Fra tutorials_tbl et VENSTRE BLI tcount_tbl b - > PÅ a.tutorial_author = b.tutorial_author; + ------------- + ----------------- + -------- -------- + | tutorial_id | tutorial_author | tutorial_count | + ------------- + ----------------- + --------------- - + | 1 | John Poul | 1 || 2 | Abdul S | NULL || 3 | Sanjay | 1 | + ------------- + ----------------- + --------------- - + 3 rader i sett (0,02 sek)

Du må gjøre mer praksis for å bli kjent med sammenføyninger. Dette er litt komplisert begrep i MySQL /SQL og vil bli mer tydelig mens du gjør reelle eksempler. Anmeldelser