Ordenagailuak, Programazioa
Ezker batu (SQL) - adibide bat, deskribapen zehatza, error erabilera
Edozein erlazional benetako datu-basea, informazio guztia mahai bereizi banatuta. taulak asko ezarritako elkarren komunikazio eskema batean. Hala ere, batez laguntzaz SQL kontsultak oso posible da, datuak, ez zirkuituan murgildurik arteko lotura bat jarri. Hau batu konexio bat, horri esker, edozein taulen kopuru arteko harreman bat eraikitzeko duzu, eta baita itxuraz desberdinak informazio konektatu eszenikoen egindako.
Artikulu hau, zehazki hitz egingo ezker kanpoaldeko batzeko buruz. konexio mota honen deskribapena jarraitu aurretik, gehitu datu-baseko taulak batzuetan.
Beharrezkoa taulak prestatzen
Adibidez, gure datu-basean, ez dago pertsona eta beren higiezinen buruzko informazioa da. Laburpena oinarritutako hiru mahai on: Pueblos (pertsona), Realty (higiezinen), Realty_peoples (taula harremanak, pertsonak zer-tik jabetza jabea da). Demagun jendearen taulak gordetzen dira datu hauek:
Herrien | ||||
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 | maite | P. | 31.12.1989 |
5 | Gerasimovsky | espero | P. | 14.03.1992 |
6 | Gerasimovsky | Oleg | Albertovich | 01/29/1985 |
7 | Sukhanovskaya | Epaimahaia | A. | 09/25/1976 |
8 | Sukhanovskaya | Julia | Y. | 01.10.2001 |
Higiezinen:
Realty | |
id | helbidea |
1 | Arkhangelsk, ul. Voronin, d. 7, kv.6 |
2 | Arkhangelsk, ul. Severodvinskaya, d. 84, q. 9 BR. 5 |
3 | Arkhangelsk eskualdean, Severodvinsk, st. Lenin, d. 134, q. 85 |
4 | Arkhangelsk eskualdean, Novodvinsk, ul. Proletarshaya, d. 16, q. 137 |
5 | Arkhangelsk, pl. Terekhina, d. 89, q. 13 |
Harreman pertsona - Jabetza:
Realty_peoples | ||
id_peoples | id_realty | mota |
7 | 3 | Guztira joint-jabetza |
8 | 3 | Guztira joint-jabetza |
3 | 5 | jabetza |
7 | 1 | jabetza |
5 | 4 | zati komunak |
6 | 4 | zati komunak |
Ezker batu (SQL) - deskribapena
Ezker konposatu ondoko sintaxia ditu:
Table_A LEFT JOIN table_B [{predikatu ON} | {Spisok_ ERABILIZ tolbtsov batera}] |
Eta eskematikoki honela:
Eta adierazpen hau "Aukeratu guztiak, salbuespenik gabe, A Table eta B Table-lerro bat datorren predikatu ilara baino ez erakustea nahi itzulita. mahai-katea taulan aurkitu bazen bikote bat, eta gero bete ondoriozko zutabeak Null - balioak ".
Gehienetan, noiz utzi konexio adierazten da ON, erabiliz soilik erabiltzen da zutabe izenak, eta hori aurreikusita konexioa egiteko berdinak dira.
Ezker batzeko - erabilera adibide
Ezkerreko konexio batera ikus dezakegu, zerrendako pertsona guztiak ez bada Herrien jabetza. Horretarako ezkerreko batu SQL kontsulta adibidea:
SELECT Herrien. *, Realty_peoples.id_realty, Realty_peoples.type FROM Herrien LEFT JOIN Realty_peoples ON Peoples.id = Realty_peoples.id_peoples; |
honako emaitza hauekin:
Query1 | ||||||
id | L_name | F_name | Middle_name | Birthday | id_realty | mota |
1 | Ivanova | Daria | B. | 07/16/2000 | ||
2 | Pugin | Vladislav | Nikolaevich | 29.01.1986 | ||
3 | Evgenin | Alexander | Federovich | 04/30/1964 | 5 | jabetza |
4 | Annina | maite | P. | 31.12.1989 | ||
5 | Gerasimovsky | espero | P. | 14.03.1992 | 4 | zati komunak |
6 | Gerasimovsky | Oleg | Albertovich | 01/29/1985 | 4 | zati komunak |
7 | Sukhanovskaya | Epaimahaia | A. | 09/25/1976 | 1 | jabetza |
7 | Sukhanovskaya | Epaimahaia | A. | 09/25/1976 | 3 | Guztira joint-jabetza |
8 | Sukhanovskaya | Julia | Y. | 01.10.2001 | 3 | Guztira joint-jabetza |
ikusi dugun bezala, Ivanova Darya Pugin Vladislav eta Anninoy Lyubovi No erregistratuta higiezinen eskubide.
Eta zer egingo jaso dugu, barne batu Barne batu erabiliz? Dakizuenez, ez-etortze ilarek baztertzen, beraz, hiru gure azken lagina atera besterik ez litzateke izango jaitsi:
Query1 | ||||||
id | L_name | F_name | Middle_name | Birthday | id_realty | mota |
3 | Evgenin | Alexander | Federovich | 04/30/1964 | 5 | jabetza |
5 | Gerasimovsky | espero | P. | 14.03.1992 | 4 | zati komunak |
6 | Gerasimovsky | Oleg | Albertovich | 01/29/1985 | 4 | zati komunak |
7 | Sukhanovskaya | Epaimahaia | A. | 09/25/1976 | 1 | jabetza |
7 | Sukhanovskaya | Epaimahaia | A. | 09/25/1976 | 3 | Guztira joint-jabetza |
8 | Sukhanovskaya | Julia | Y. | 01.10.2001 | 3 | Guztira joint-jabetza |
Badirudi bigarren bertsioa ere gure arazoa baldintzak betetzen dituela litzateke. Hala ere, beste batean erantsi hasten gara bada, eta beste taula bat, emaitza hiru pertsonek dagoeneko irretrievably desagertu. Beraz, praktikan, noiz mahai bat baino konbinatuz askoz maizago erabiltzen Ezker eta Eskuin Barne baino konexio batzeko.
ezkerrera begiratu sql adibide batu jarraituko du. Erantsi gure etxe helbideak taula bat:
SELECT Herrien. *, Realty_peoples.id_realty, Realty_peoples.type, Realty.address Herrien FROM LEFT JOIN Realty_peoples ON Peoples.id = Realty_peoples.id_peoples LEFT JOIN Realty ON Realty.id = Realty_peoples.id_realty |
Orain lege-mota bakarra, baina baita higiezinen helbidera lortuko dugu:
Query1 | |||||||
id | L_name | F_name | Middle_name | Birthday | id_realty | mota | helbidea |
1 | Ivanova | Daria | B. | 07/16/2000 | |||
2 | Pugin | Vladislav | Nikolaevich | 29.01.1986 | |||
3 | Evgenin | Alexander | Federovich | 04/30/1964 | 5 | jabetza | Arkhangelsk, pl. Terekhina, d. 89, q. 13 |
4 | Annina | maite | P. | 31.12.1989 | |||
5 | Gerasimovsky | espero | P. | 14.03.1992 | 4 | zati komunak | Arkhangelsk eskualdean, Novodvinsk, ul. Proletarshaya, d. 16, q. 137 |
6 | Gerasimovsky | Oleg | Albertovich | 01/29/1985 | 4 | zati komunak | Arkhangelsk eskualdean, Novodvinsk, ul. Proletarshaya, d. 16, q. 137 |
7 | Sukhanovskaya | Epaimahaia | A. | 09/25/1976 | 3 | Guztira joint-jabetza | Arkhangelsk eskualdean, Severodvinsk, st. Lenin, d. 134, q. 85 |
7 | Sukhanovskaya | Epaimahaia | A. | 09/25/1976 | 1 | jabetza | Arkhangelsk, ul. Voronin, d. 7, kv.6 |
8 | Sukhanovskaya | Julia | Y. | 01.10.2001 | 3 | Guztira joint-jabetza |
Arkhangelsk eskualdean, Severodvinsk, st. Lenin, d. 134, q. 85 |
Ezker batzeko - error erabilera tipikoak: baliogabe prozedura taula
Ezkerreko kanpoaldeko berean egin oinarrizko akatsak batzeko mahaiak, bi:
- taulen ordena zein datu galdu zen behar bezala hautatua izan da.
- Non erroreekin kontsulta bat erabiltzen duzunean batu taulak.
Demagun lehen akatsa. arazorik erabakia hartu aurretik egin beharko da argi eta garbi ulertu behar du zer azkenean lortu nahi dugun. Adibide honetan, batez ere, jende bakar bat behin hartu genuen, baina erabat kopurua 2, horren jabea ez da aurkitu azpian objektuaren buruzko informazioa galdu.
taulak mugitu dugu leku batzuetan kontsulta bat ere bada, eta has litzateke «... From Realty ezker Herri batu ...» edozein jabetza bat, ez genuke galdu dute, ez duzu jendea kontatzeko.
Baina ez izan, ezker konexio beldur, full kanpoko, hau da, emaitzak eta bat datozen, eta ez da bat datorren lerroak sartuta aldatzeko.
Azken finean, lagin bolumena izaten da oso handia, eta datuak estra benetan alferrikakoa. Gauza nagusia - irudikatu zer emaitza lortu nahi duzun: pertsona guztien beren jabetza eskuragarri zerrenda bat edo haien jabeen jabetza osoan zerrendan (izanez gero) batera.
Ezker batzeko - error erabilera tipikoak: Eskaera zuzena da baldintzak ezartzeko Non hasi
Bigarren error Halaber datu galera lotutako, eta ez dira beti berehala itxurazko.
Goazen atzera kontsulta denean utzi dugun konexioak jaso bidez pertsona guztiak eta euren jabetza daturik. Gogoratu jarraian ekin ezker batu sql adibidea:
FROM Herrien LEFT JOIN Realty_peoples ON Peoples.id = Realty_peoples.id_peoples; |
Demagun eskatuta argitu nahi dugu eta ez irteera datuak, ez du non lege mota - "Jabetza". dugu eransteko besterik baduzu, ezker erabiliz batu sql, honako baldintza adibide bat:
...
Non mota <> "Jabetza" |
Nork jabetza ez, baita null balioa nulua ez da honela aldean jende datuak galdu egingo dugu:
Query1 | ||||||
id | L_name | F_name | Middle_name | Birthday | id_realty | mota |
5 | Gerasimovsky | espero | P. | 14.03.1992 | 4 | zati komunak |
6 | Gerasimovsky | Oleg | Albertovich | 01/29/1985 | 4 | zati komunak |
7 | Sukhanovskaya | Epaimahaia | A. | 09/25/1976 | 3 | Guztira joint-jabetza |
8 | Sukhanovskaya | Julia | Y. | 01.10.2001 | 3 | Guztira joint-jabetza |
horregatik gertatzen Akatsak saihesteko, hobe da berehala hautaketa baldintza ezartzeko konexio gainean. Ezkerreko batera honako kontuan hartu batu sql adibidez proposatzen dugu.
SELECT Herrien. *, Realty_peoples.id_realty, Realty_peoples.type Herrien FROM LEFT JOIN Realty_peoples ON (Peoples.id = Realty_peoples.id_peoples ETA mota <> "Jabetza") |
Emaitza honako hau izango da:
Query1 | ||||||
id | L_name | F_name | Middle_name | Birthday | id_realty | mota |
1 | Ivanova | Daria | B. | 07/16/2000 | ||
2 | Pugin | Vladislav | Nikolaevich | 29.01.1986 | ||
3 | Evgenin | Alexander | Federovich | 04/30/1964 | ||
4 | Annina | maite | P. | 31.12.1989 | ||
5 | Gerasimovsky | espero | P. | 14.03.1992 | 4 | zati komunak |
6 | Gerasimovsky | Oleg | Albertovich | 01/29/1985 | 4 | zati komunak |
7 | Sukhanovskaya | Epaimahaia | A. | 09/25/1976 | 3 | Guztira joint-jabetza |
8 | Sukhanovskaya | Julia | Y. | 01.10.2001 | 3 | Guztira joint-jabetza |
Horrela, ezkerrera sinpleak jarraituz by batu sql Adibidez, pertsona guztien zerrenda bat jaso dugu, gehiago mugitzen, ekitatea / joint titulartasuna batean propietate horietako bat.
Ondorioz dut berriro ere basetik edozein informazio lagin bat behar arduraz hartu behar azpimarratu nahi nuke. Gurekin aurrean ezker batera ireki zuten ñabardura asko batu sql sinple adibidez, azalpen horren bateko - nahiz oinarrizko kontsultaren idazten hasi aurretik, behar arretaz zer den azkenean lortu nahi duguna ulertzeko. Zorte ona izan!
Similar articles
Trending Now