justus Posted March 31, 2005 Report Share Posted March 31, 2005 ir 2 tabulas tabula 1 id | nosaukums | laiks | 1stradnieka_id| 2stradnieka_id | 3stradnieka_id stradnieki id | vards | laiks | biksu izmers | kedu firma | personigais auto ir kautkas līdzīgs uzdevumu sarakstam, katru uzdevumu veic 3 stradnieki. vajag izselecteet vienā querijaa laukus no pirmaas tabulas un laukus no otraas tabulas , kur sakrīt attiecīgie id ( visi id var ne vienmēr sakrist, jo dazreiz uzdevumu veic tikai 2 vai viens strādnieks). Tātad jāsajoino 4 ieraksti . Rekur mans nevieksmīgais provējums : SELECT * FROM tabula1 LEFT JOIN stradnieki ON (tabula1.1stradnieka_id=stradnieki.id) LEFT JOIN stradnieki ON (tabula1.2stradnieka_id=stradnieki.id) LEFT JOIN stradnieki ON(tabula1.3stradnieka_id=stradnieki.id) ORDER BY tabula1.nosaukums ASC Link to comment Share on other sites More sharing options...
bubu Posted March 31, 2005 Report Share Posted March 31, 2005 (edited) Tu jau tur viedo kautko jocīgu. Ja pareizi sapratu, tad vajag šitā: SELECT * FROM tabula1 LEFT JOIN stradnieki ON tabula1=1stradnieka_id OR tabula1=2stradnieka_id OR tabula1=3stradnieka_id ORDER BY nosaukums ASC Tikai nezinu, cik tas efektīvi būs, tb vai MySQL (droši vien) mācēs izmantot indeksu. Un vai tomēr vienkāršāk nebija veidot parasto n:n relāciju (citādi daudz kur būs tev ORi jalieto): tabula1(id, nosaukums,...) starptabula(tabula1_id, stradnieka_id) stradnieks(id, ...) Un tad: SELECT tabula1.*, stradnieks.* FROM tabula1 LEFT JOIN starptabula ON tabula1.id=tabula1_id LEFT JOIN stradnieks ON stradnieka_id=stradnieks.id ORDER BY nosaukums ASC Edited March 31, 2005 by bubu Link to comment Share on other sites More sharing options...
justus Posted March 31, 2005 Author Report Share Posted March 31, 2005 (edited) nekas nesanaak, man izdveš tikai: Not unique table/alias: 'stradnieki' in \index.php on line 301 laikam buus jaataisa variants ar 3 tabulaam. :(( Edited March 31, 2005 by justus Link to comment Share on other sites More sharing options...
bubu Posted March 31, 2005 Report Share Posted March 31, 2005 (edited) Mana kļūda (bet tev jau vajadzēja pārbaudīt selektu, nevis tīru copy&paste taisīt...): SELECT * FROM tabula1 t LEFT JOIN stradnieki ON t.id=1stradnieka_id OR t.id=2stradnieka_id OR t.id=3stradnieka_id ORDER BY nosaukums ASC Edited March 31, 2005 by bubu Link to comment Share on other sites More sharing options...
justus Posted March 31, 2005 Author Report Share Posted March 31, 2005 netaisiiju copy paste, lieta ir cita tas OR nederees , jo ja t.id=1stradnieka_id OR t.id=2stradnieka_id , šie abi izpildās reizē tad tiek ģeenerēti 2 ieraksti pirmais ieraksts ar 1stradnieka_id laukiem un otrais ieraksts ar 2stradnieka_id . Shēma ir tāda panjem 1 ierakstu no tabulas1, kur attieciigie id uz tabulu 2, tie id kas sakrīt vajag visus savaak vienaa ierakstaa(vinjiem nav obligaati visiem jaasakriit, ja nesakriit atlasa datus tikai no tabula 1). Link to comment Share on other sites More sharing options...
bubu Posted March 31, 2005 Report Share Posted March 31, 2005 Tad manuprāt tādu kveriju kā tev vajag bez subselektiem nevar uzrakstīt. Ja piemēram vajadzētu tikai tabula1 datus atlasīt, tad laikam varētu šādi: SELECT DISTINCT(t.*) FROM tabula1 t LEFT JOIN stradnieki ON t.id=1stradnieka_id OR t.id=2stradnieka_id OR t.id=3stradnieka_id ORDER BY nosaukums ASC Link to comment Share on other sites More sharing options...
justus Posted April 2, 2005 Author Report Share Posted April 2, 2005 tātad kļūda ir db struktūras plānošanā ! Link to comment Share on other sites More sharing options...
bubu Posted April 2, 2005 Report Share Posted April 2, 2005 tātad kļūda ir db struktūras plānošanā ! 15896[/snapback] Vai arī nepareizas DBPS izvēle. <_< Link to comment Share on other sites More sharing options...
justus Posted April 2, 2005 Author Report Share Posted April 2, 2005 (edited) DBPS kāds ir šīs abreviartūras atšifrējums ? Edited April 2, 2005 by justus Link to comment Share on other sites More sharing options...
Venom Posted April 2, 2005 Report Share Posted April 2, 2005 datu bāzes pārvaldes sistēma Link to comment Share on other sites More sharing options...
justus Posted April 3, 2005 Author Report Share Posted April 3, 2005 tabula1(id, nosaukums,...)starptabula(tabula1_id, stradnieka_id) stradnieks(id, ...) Un tad: SELECT tabula1.*, stradnieks.* FROM tabula1 LEFT JOIN starptabula ON tabula1.id=tabula1_id LEFT JOIN stradnieks ON stradnieka_id=stradnieks.id ORDER BY nosaukums ASC 15862[/snapback] bet tikuntaa man nekaadiigi nesanaak no straadnieku tabulas izselekteet vairaak par vienu straadnieku, kaa meeginu veelreiz piejoinot stradnieku tabulu ar otraa stradnieka id nobljaujaas: Not unique table/alias: 'stradnieki' , cik sapratu tad 2 Joinot nevar laikam :angry: Link to comment Share on other sites More sharing options...
hu_ha Posted April 3, 2005 Report Share Posted April 3, 2005 id nobljaujaas: Not unique table/alias: 'stradnieki' , cik sapratu tad 2 Joinot nevar laikam 15923[/snapback] norādi tabulu, kuras stradnieki lauks jāizmanto piem select taba.a,tabb.a from t taba left join t tabb on taba.id=tabb.id Link to comment Share on other sites More sharing options...
bubu Posted April 3, 2005 Report Share Posted April 3, 2005 Tu domā to kveriju, kas ir quotē? Tam gan nevajadzētu mest tādu kļūdu. Link to comment Share on other sites More sharing options...
justus Posted April 3, 2005 Author Report Share Posted April 3, 2005 Tu domā to kveriju, kas ir quotē? Tam gan nevajadzētu mest tādu kļūdu. 15925[/snapback] nu tas nemet bet es vinu pamainiiiju piejoinoju veelreiz tabulu stradnieki gala lai vareetu dabuut veel klaat otraa straadnieka datus. Link to comment Share on other sites More sharing options...
bubu Posted April 3, 2005 Report Share Posted April 3, 2005 nu tas nemet bet es vinu pamainiiiju piejoinoju veelreiz tabulu stradnieki gala lai vareetu dabuut veel klaat otraa straadnieka datus. 15927[/snapback] Nu bet loģiski, ka tur būs šāda kļūda, ja nepārsauksi otro tabulu, t.b. nelietosi tabulu aliasus, lai mysql zinātu kuras kolonnas pie kuras tabulas attiecās, jo citādi iznāk, ka eksistēs vienāda tabulas, kur nu vēl runājot par kolonnu nosaukumiem. Link to comment Share on other sites More sharing options...
Recommended Posts