Komputeran, Bernameyên
Çep beşdarî (SQL) - nimûne, bi hûrgilî, bikaranîna error
Di her heye rast têkilî, hemû agahî li ser maseyekê cuda de hatin belavkirin. Gelek ji maseyên bi derve di xaxê danûstendina bi hev re danîn. Lê belê, bi alîkariya SQL Queries ev mumkin e ku di navbera Daneyên, di dewreyê de veşartî ne. Ev yek bi stran û girêdana beşdarî, ku destûrê dide te ku avakirina têkiliyên di navbera her hejmara maseyên, û heta bi girêdan agahî ewla şundamayî kirin.
Ev gotar bi taybetî li ser leşê çepê beşdarî bipeyivin. Seke ku li description of this type of connection, lê di hin tabloyên nav HTMLê da heye.
Amadekarîya maseyên pêwîst
Ji bo nimûne, di nav HTMLê da me, ye, agahiyên li ser gelê û sîteya rast xwe li wir. Gelan (kes), Realty (sîteya rast), Realty_peoples (têkiliyên sifrê, kesên ku ji kîjan malê ye ji): Nasname li ser sê maseyên bingeha. Gavekî daneyên jêr profîlek tabloyên ku ji xelkê:
gelên | ||||
id | L_name | F_name | Middle_name | Birthday |
1 | Ivanova | Daria | B. | 07/16/2000 |
2 | Pugin | Vladislav | Nikolaevich | 29.01.1986 |
3 | Evgenin | Alexander | Federovich | 04/30/1964 |
4 | Annina | evîn | P. | 31.12.1989 |
5 | Gerasimovsky | hêvî | P. | 14.03.1992 |
6 | Gerasimovsky | Oleg | Albertovich | 01/29/1985 |
7 | Sukhanovskaya | Juriyê | A. | 09/25/1976 |
8 | Sukhanovskaya | Julia | Y. | 01.10.2001 |
sîteya û Paşnav:
Realty | |
id | navnîşan |
1 | Arkhangelsk, ul. Voronin, d. 7, kv.6 |
2 | Arkhangelsk, ul. Severodvinskaya, d. 84, q. 9 BR. 5 |
3 | Arkhangelsk herêmê, Severodvinsk, st. Lenîn, d. 134, q. 85 |
4 | Arkhangelsk herêmê, Novodvinsk, ul. Proletarshaya, d. 16, q. 137 |
5 | Arkhangelsk, pl. Terekhina, d. 89, q. 13 |
Têkiliyên gelê - property:
Realty_peoples | ||
id_peoples | id_realty | type |
7 | 3 | xwedîtîya hevpar Total |
8 | 3 | xwedîtîya hevpar Total |
3 | 5 | mal |
7 | 1 | mal |
5 | 4 | parçeyên Common |
6 | 4 | parçeyên Common |
Çepgir beşdarî (Sql) - Description
dikere çepê ve nabe.Hevoksaziya jêr e:
Table_A LEFT JOIN table_B [{ON pêveber} | {KARANÎNA spisok_ bi tolbtsov}] |
Û puxt dike wiha ne:
Û vê ramanê jî wekî "Select All, bê cudahî, xeta Table A û B Table ji bo nîşandanê tenê dama hevcotî yên sererast de pêveber dikin. Ger ser sifrê li ser sifrê string ya ji bo cotên A hate dîtin, piştre tije stûnên ku di encamê Null - nirxên ".
Pirî caran, gava ku pêwendiyê bi xwe ye ku li ser, bi kar tê bikaranîn, bi tenê dema ku navên column, ku plan ji bo girêdana bi eynî ne.
Çep beşdarî - wergerandî yên bikaranîna
Bi girêdana bi ya çepê de em dikarin bibînin, hemû kes ji lîsteya eger Gelan malê heye. Ji bo vê jî li milê çepê beşdarî nimûne Jêpirskirina SQL:
Gelên SELECT. *, Realty_peoples.id_realty, Realty_peoples.type JI Gelan LEFT JOIN Realty_peoples ON Peoples.id = Realty_peoples.id_peoples; |
Bi encamên jêrîn:
Query1 | ||||||
id | L_name | F_name | Middle_name | Birthday | id_realty | type |
1 | Ivanova | Daria | B. | 07/16/2000 | ||
2 | Pugin | Vladislav | Nikolaevich | 29.01.1986 | ||
3 | Evgenin | Alexander | Federovich | 04/30/1964 | 5 | mal |
4 | Annina | evîn | P. | 31.12.1989 | ||
5 | Gerasimovsky | hêvî | P. | 14.03.1992 | 4 | parçeyên Common |
6 | Gerasimovsky | Oleg | Albertovich | 01/29/1985 | 4 | parçeyên Common |
7 | Sukhanovskaya | Juriyê | A. | 09/25/1976 | 1 | mal |
7 | Sukhanovskaya | Juriyê | A. | 09/25/1976 | 3 | xwedîtîya hevpar Total |
8 | Sukhanovskaya | Julia | Y. | 01.10.2001 | 3 | xwedîtîya hevpar Total |
Wek em dibînin, Ivanova Darya Pugin Vladislav û Anninoy Lyubovi No qeyd mafên sîteya rast.
Û dê çi em qebûl kir, bi bikar anîna hundir tevlî Inner beşdarî? Wek hûn dizanin, ku ew şikl û rêzikan non-lêhatî, da sê ji testa dawî jî me bi hêsanî dê werin betalkirin:
Query1 | ||||||
id | L_name | F_name | Middle_name | Birthday | id_realty | type |
3 | Evgenin | Alexander | Federovich | 04/30/1964 | 5 | mal |
5 | Gerasimovsky | hêvî | P. | 14.03.1992 | 4 | parçeyên Common |
6 | Gerasimovsky | Oleg | Albertovich | 01/29/1985 | 4 | parçeyên Common |
7 | Sukhanovskaya | Juriyê | A. | 09/25/1976 | 1 | mal |
7 | Sukhanovskaya | Juriyê | A. | 09/25/1976 | 3 | xwedîtîya hevpar Total |
8 | Sukhanovskaya | Julia | Y. | 01.10.2001 | 3 | xwedîtîya hevpar Total |
Ev wisa diyar e ku guhertoya duyemîn jî digel şert û mercên ji pirsgirêka me. Lê belê, heke em dest bi rêz li ser din, û sifrê din, sê kes ji encama ji xwe paşde çûye. Çep û Rastê girêdana vê yekê jî, di pratîkê de, dema ku yekbûneke Tabloyên multiple çiqas bêtir caran tên bikaranîn ji Inner bibin.
Dê berdewam binêrin li ser milê çepê wergerandî sql bibin. Pêvekirina sifrê bi navnîşanên malên me dike:
Gelên SELECT. *, Realty_peoples.id_realty, Realty_peoples.type, Realty.address JI gelan LEFT JOIN Realty_peoples ON Peoples.id = Realty_peoples.id_peoples LEFT JOIN Realty ON Realty.id = Realty_peoples.id_realty |
Niha em dest bi tenê ferhenga a qanûnê, di heman demê de jî navnîşana sîteya rast:
Query1 | |||||||
id | L_name | F_name | Middle_name | Birthday | id_realty | type | navnîşan |
1 | Ivanova | Daria | B. | 07/16/2000 | |||
2 | Pugin | Vladislav | Nikolaevich | 29.01.1986 | |||
3 | Evgenin | Alexander | Federovich | 04/30/1964 | 5 | mal | Arkhangelsk, pl. Terekhina, d. 89, q. 13 |
4 | Annina | evîn | P. | 31.12.1989 | |||
5 | Gerasimovsky | hêvî | P. | 14.03.1992 | 4 | parçeyên Common | Arkhangelsk herêmê, Novodvinsk, ul. Proletarshaya, d. 16, q. 137 |
6 | Gerasimovsky | Oleg | Albertovich | 01/29/1985 | 4 | parçeyên Common | Arkhangelsk herêmê, Novodvinsk, ul. Proletarshaya, d. 16, q. 137 |
7 | Sukhanovskaya | Juriyê | A. | 09/25/1976 | 3 | xwedîtîya hevpar Total | Arkhangelsk herêmê, Severodvinsk, st. Lenîn, d. 134, q. 85 |
7 | Sukhanovskaya | Juriyê | A. | 09/25/1976 | 1 | mal | Arkhangelsk, ul. Voronin, d. 7, kv.6 |
8 | Sukhanovskaya | Julia | Y. | 01.10.2001 | 3 | xwedîtîya hevpar Total |
Arkhangelsk herêmê, Severodvinsk, st. Lenîn, d. 134, q. 85 |
Çep beşdarî - bikaranîna tîpîk ên error: sifrê pêvajoya kirarî ya nederbasdar
sedema bingehîn ên li derve çepê beşdarî maseyên, du:
- Eger bi fermana maseyên ji bo ku daneyên ji dest da hate hilbijartin.
- Where şaşiyên ku bi bikaranîna a query bi beşdarî maseyên.
Şaşiya yekemîn binêrin. Berî hingî her pirsgirêkê divê bi zelalî fêm kir, ku em çi dixwazin ji bo di dawiyê de bi dest bixin. Di vê mînaka li jor, em birin her yek yek ji wan kesan, di heman demê de bi temamî bi agahiyên li ser hêmanê di bin hejmara 2, ku xwediyê nehat dîtin ji dest da.
Eger em li tabloyên di query û li hinek cihan de meşî, û dê bi dest «... From Realty hiştin beşdarî Gelan ...» tu kes malê, em ê ji dest dane, hûn ne li ser hev dê ji gel re bêjin.
Lê ne bê tirs û bi girêdana çepê, vedigerin full ji derve ye, ya ku di encam û lêhatî û bi xetên lêhatî di nav de.
Piştî ku hemû, di volume yên test e gelek caran pir mezin, û welat zêde di rastiyê de bêkêr e. Ya herî sereke - ku karibin bibînin ka tu dixwazî ji bo bidestxistina encamê: hemû gel bi lîsteyek ji malê License de derbasdar xwe an jî hemû lîsteya malê bi xwediyên wan (eger tu).
Çep beşdarî - bikaranîna tîpîk ên error: Daxwaza rast e, dema danîna şert û mercên li ku derê
The error duyemîn jî bi windakirina daneya têkildar, û her tim di cih de, xuya ne.
De em herin back to ya daxwazkirî dema ku em hiştin bi rêya pêwendiyên welat ji bo hemû xelkê de û mal û milkê heyî wan stand. Bi bîr bîne li jêr bi çepê beşdarî nimûne sql:
JI Gelan LEFT JOIN Realty_peoples ON Peoples.id = Realty_peoples.id_peoples; |
Difikirin, em dixwazin ji bo zelalkirina bi daxwaz û nizane bi encam li welat, li cihê ku type of qanûna - "babet". Eger em bi tênê bişiyênê, bi kar hiştin, tevlî sql, nimûneyeke ji rewşa jêr e:
...
Where type <> "babet" |
em dê daneyên li ser kesên ku xwedî ti malê, ji ber ku Null nirxa null ye rêje ne wiha winda bike:
Query1 | ||||||
id | L_name | F_name | Middle_name | Birthday | id_realty | type |
5 | Gerasimovsky | hêvî | P. | 14.03.1992 | 4 | parçeyên Common |
6 | Gerasimovsky | Oleg | Albertovich | 01/29/1985 | 4 | parçeyên Common |
7 | Sukhanovskaya | Juriyê | A. | 09/25/1976 | 3 | xwedîtîya hevpar Total |
8 | Sukhanovskaya | Julia | Y. | 01.10.2001 | 3 | xwedîtîya hevpar Total |
Ji bo pêşî li şaşiyên ji bo vê yekê diqewimin, ev herî baş e ji bo danîna rewşa hilbijartinê di cih de li ser girêdana. Em pêşniyar dikin ji bo ku li jêr bi milê çepê beşdarî nimûne sql.
Gelên SELECT. *, Realty_peoples.id_realty, Realty_peoples.type JI gelan LEFT JOIN Realty_peoples ON (Peoples.id = Realty_peoples.id_peoples Û type <> "babet") |
Di encamê de wê bibin wiha ne:
Query1 | ||||||
id | L_name | F_name | Middle_name | Birthday | id_realty | type |
1 | Ivanova | Daria | B. | 07/16/2000 | ||
2 | Pugin | Vladislav | Nikolaevich | 29.01.1986 | ||
3 | Evgenin | Alexander | Federovich | 04/30/1964 | ||
4 | Annina | evîn | P. | 31.12.1989 | ||
5 | Gerasimovsky | hêvî | P. | 14.03.1992 | 4 | parçeyên Common |
6 | Gerasimovsky | Oleg | Albertovich | 01/29/1985 | 4 | parçeyên Common |
7 | Sukhanovskaya | Juriyê | A. | 09/25/1976 | 3 | xwedîtîya hevpar Total |
8 | Sukhanovskaya | Julia | Y. | 01.10.2001 | 3 | xwedîtîya hevpar Total |
Bi vî awayî, piştî danê çepê beşdarî nimûne sql, em qebûl lîsteya hemû gelê me, raperîn din, yek ji van milkan di / xwedîtîya hevpar dadvanî.
Wek encam, ez dixwazim careke din destnîşan kir ku test ji tu agahî ji nav HTMLê da heye divê bi berpirsyar bên avêtin. Gelek detayên vekirin, li ber me bi çepê beşdarî nimuneya sql, daxuyanî yên ku yek - berî ku tu dest bi nivîsandina heta query bingehîn, tu divê bi baldarî ji bo fêm bikin ka em dixwazin di dawiyê de bistînin. Bextê te xweş bî
Similar articles
Trending Now