Gacha Posted August 19, 2004 Report Share Posted August 19, 2004 (edited) Līdz šim esmu lietojis pašus elementārākos sql pieprasījumus un ja vajadzēja ko vairāk, tad lietoju vairākus, vai arī piepalīdzēju ar php. Bet zinu, ka labāk visu izdara ar sql un tad tik ķerties pie php. Tātad ir viena tabula: id data Un otra tabula: sec_id description Pirmās tabulas id ir = ar otrās sec_id. Pieņemsim, ka gribu Select * from 1-tabula order by id desc while(notiek shitais cikls){ Select * from 2-tabula where id='sec_id' un te echo to description no 2-tabula un data no 2-tabula } Nu šitā es parasti daru, bet gribu to izdarīt to ar vienu sql pieprasījumu, ja nekļūdos tad to varētu ar LEFT JOIN, bet man kaut kā tas mysql manuālis galīgi nepielec, nesmu vēl piešāvies pie tā pareizas lietošanas. Būtu labi ja kāds man paskaidrotu šo lietu! ....... Vēl viens jautājums! Kāda atšķirība un kapēc tā dara? 1.var Select * from tabula $data = $row['data']; 2.var Select (data) as x from tabula $data = $row['x']; Kādos gadījumos lieto otro gadījumu? Varbūt bik nepareizi, jo tādu neizmantoju, bet cerams, ka domu sapratāt! Edited August 19, 2004 by Gacha Link to comment Share on other sites More sharing options...
bubu Posted August 19, 2004 Report Share Posted August 19, 2004 1) SELECT * FROM tabula1, tabula2 WHERE id = sec_id 2) tas vajadzīgs, ja gadās kolonnas ar vienādiem nosaukumiem (dažādās tabulās), vai arī kolonnai nav vārda, vai tas arī pārāk garš. Tad izdevīgāk pārneimot kolonnu un lietot jauno nosaukumu. Link to comment Share on other sites More sharing options...
Gacha Posted August 19, 2004 Author Report Share Posted August 19, 2004 1) Nu un tad man būs arī $row['data'] $row['description'] katrs no savas tabulas kur id = ar to ko vajaga? Prasu, jo pagaidam man nav pieejams serveris, kur iemeginat! Bet ja izpildu to tavu pieprasijumu, tad man ir nepiecieshams zinat kadu id, bet ja es gribu shadi: Pirma tabula ir tas id un DATA, kur kaut kadi dati, bet otra tabula katram shim DATA ir "description" apraksts, kuru gribetu ari izmest ara. Select * from tabula1, tabula2 ... while(pieprasijums){ $row['data']; //ar id=1 $row['description']; //ar to pashu 1 } 2) To as esmu izmantojis un saprotu, bet kapec izmanto (lauks) nevis * Vai ja ņem tikai dažus, tad tas atgriezīs tikai tos un vai tad tas pieprasijums notiks ātrāk? Link to comment Share on other sites More sharing options...
bubu Posted August 19, 2004 Report Share Posted August 19, 2004 1) ja tev ir šādas tabulas tabula1 --------- 1 abc 2 ddd 3 cccc un tabula2 -------- 1 aaaa 1 bvvv 2 trrrr tad tas, ko es devu atgriezīs šādu rezultātu: id data sec_id description 1 abc 1 aaaa 1 abc 1 bvvv 2 ddd 2 trrrr Ja tev vajag kādu konkrētu ID vai kolonnas, tad raksti: SELECT id, data, description FROM tab1, tab2 WHERE id = sec_id AND id = '$id' Vai arī es nesaprotu, kas tev tur īsti ir vajadzīgs. Tev tur 1-n relācija, vai kā? 2) Laikam jau ir ātrāk, ja uzskaita pats savas kolonas, jo ja tu raksti *, tad sistēmai ir jāvēršas pie informācijas, kur definētas tabulas un jāvelk visi lauku nosaukumi ārā. Cik praksē esmu redzēhis Oracle serverim tas dod diezgan ievērojamu ātrdarbību. Link to comment Share on other sites More sharing options...
bubu Posted August 19, 2004 Report Share Posted August 19, 2004 Prasu, jo pagaidam man nav pieejams serveris, kur iemeginat! Aizej uz http://www.sqlite.org un novelc sqlite.exe, būs tev labs tūlis priekš offline ekperimentēšanai. Pats diezgan daudz to izmantoju. :) Link to comment Share on other sites More sharing options...
Venom Posted August 19, 2004 Report Share Posted August 19, 2004 tamdēļ jau teu tas AS arī vajadzīgs - lai atšķirt 'data's ir arī tāda lieta, kā JOIN - tabulu apvienošana pēc kaut kāda lauka SELECT table1.data as `main`, table2.data as `description` FROM table1 LEFT JOIN table2 ON table2.sec_id=table1.id vai izmantot vairāk, nekā divām tabulām. Ja izmanto RIGHT JOIN, tad atgriezīs tikai tad, ja abās tabulās ir sakritošas att. kolonnas, ja LEFT JOIN, tad būtu jāņem arī tad, kad otrā tabulā datu nav. Link to comment Share on other sites More sharing options...
bubu Posted August 19, 2004 Report Share Posted August 19, 2004 (edited) Viņam tak nesaucās tā vajadzīga kolonna kā data abās tabulās. Vienā ir data otrā description, nekādus AS nevajag. Ja izmanto RIGHT JOIN, tad atgriezīs tikai tad, ja abās tabulās ir sakritošas att. kolonnas, ja LEFT JOIN, tad būtu jāņem arī tad, kad otrā tabulā datu nav. Nu nu, te nu tu mānies :) t1 LEFT JOIN t2 ON ... - atgriezīs visus ierakstus no t1 un tiem atbilstošos no t2 vai NULL, ja nav t1 RIGHT JOIN t2 ON ... - atgriezīs visus ierakstus no t2 un tiem atbilstošos no t1 vai NULL, ja nav t1 FULL JOIN t2 ON ... - atgriezīs visus ierakstus no t1 un t2 un, attiecīgi, tiem atbilstošos no t2 un t1 vai NULL, ja nav Edited August 19, 2004 by bubu Link to comment Share on other sites More sharing options...
Gacha Posted August 19, 2004 Author Report Share Posted August 19, 2004 Aizej uz http://www.sqlite.org un novelc sqlite.exe, būs tev labs tūlis priekš offline ekperimentēšanai. Pats diezgan daudz to izmantoju. Žēl, bet es esmu uz Linuxa :) Bet droši vien ir arī kādas alternatīvas :) Paldies jums abiem par helpu, šis man daudz palīdzēja! Link to comment Share on other sites More sharing options...
bubu Posted August 19, 2004 Report Share Posted August 19, 2004 sqlite ir arī uz linuxiem :) Link to comment Share on other sites More sharing options...
Venom Posted August 19, 2004 Report Share Posted August 19, 2004 Nu nu, te nu tu mānies :) Es tač neteicu, no kuras otrās. Ja pareizi pielieto RIGHT JOIN, tad neizvadīs ne no vienas ;) Link to comment Share on other sites More sharing options...
bubu Posted August 19, 2004 Report Share Posted August 19, 2004 (edited) Es sapratu, ka tu teici, ka RIGHT izvadīs tikai tādas rindiņas, kurām ir atbilstošs ieraksts otrajā tabulā, t.b. to pašu ko .. .FROM t1, t2 WHERE t1.id = t2.id Nu bet ja jau ir normāla 1-n relācija, tad jau tiešām otrajā tabulā nebūs tādu ierakstu, uz kuriem referencējas pirmā tabula. Edited August 19, 2004 by bubu Link to comment Share on other sites More sharing options...
Gacha Posted August 19, 2004 Author Report Share Posted August 19, 2004 Nu to zinu, ka tas pats SQLITE ir, bet vai ari tas GUI tulis ir ? (Nav pagaidam arzemes, tapec nevaru parbaudit) Link to comment Share on other sites More sharing options...
bubu Posted August 19, 2004 Report Share Posted August 19, 2004 Kāds GUI? SQLite tak ir komandridas tūlis. Link to comment Share on other sites More sharing options...
Recommended Posts