AndzX8-842 Posted July 7, 2006 Report Share Posted July 7, 2006 (edited) Te ir tabulas. -- -- Table structure for table `users` -- CREATE TABLE users ( id int(10) unsigned NOT NULL auto_increment, username varchar(40) NOT NULL default '', password varchar(40) NOT NULL default '', email varchar(255) NOT NULL default '', signature TEXT, status tinyint(1) unsigned NOT NULL default '0', added datetime NOT NULL default '0000-00-00 00:00:00', last_login datetime NOT NULL default '0000-00-00 00:00:00', last_access datetime NOT NULL default '0000-00-00 00:00:00', ip varchar(15) NOT NULL default '', class tinyint(1) unsigned NOT NULL default '1', avatar varchar(255) NOT NULL default '', warned tinyint(1) NOT NULL default '0', PRIMARY KEY (id) ) TYPE=MyISAM; CREATE TABLE fleet { id int(10) unsigned NOT NULL auto_increment, fleet_name varchar(255) NOT NULL default '', fleet_commander_id int(10) NOT NULL default '', PRIMARY KEY (id) } TYPE=MyISAM; -- -- Table structure for table `divisions` -- CREATE TABLE divisions { id int(10) unsigned NOT NULL auto_increment, fleet_id int(10) unsigned NOT NULL default '', division_name varchar(255) NOT NULL default '', division_commander_id int(10) unsigned NOT NULL default '', PRIMARY KEY (id) } TYPE=MyISAM; -- -- Table structure for table `dmembers` -- CREATE TABLE dmembers { id int(10) unsigned NOT NULL auto_increment, division_id int(10) unsigned NOT NULL default '', user_id int(10) unsigned NOT NULL default '', PRIMARY KEY (id) } TYPE=MyISAM; Nepieciešams ar vienu query izvilkt informāciju šādā secībā. Izvilkt infromāciju no fleet tabulas, tad pēc fleet_commander_id atrast tādu pašu id users tabulā un izvilkt tās tabulas rindas informāciju, tad no divisions tabulas atrast rindu\rindas, kam ir tāds pats fleet_id kā id fleet tabulā un izvilt tās\to rindas\rindu informāciju, pēc divisions tabulā atrodamā id atras dmembers tabulā rindu vai rindas, kurās division_id sakrīt ar division tabulas id un izvilk to rindu\rindas informāciju, tad pēc dmembers tabulas izvilktās informācijas izvilkt no users tabulas visas rindas, kurās users tabulā id sakrīt ar dmembers tabulas division_member_id. Dikti sarežģīti man tas viss izklausās, jo nav bijis vajadzīgs iepriekš taisīt tik sarežģītu query. Ļoti noderētu palīdzība. Šo to pamēģināju ar 2 tabulām un apmēram sanāca, bet ar 4 vienā query man tas JOIN\ON\AS ir par sālītu. :( Kāds tas query kods izskatītos? Edited July 7, 2006 by AndzX8-842 Link to comment Share on other sites More sharing options...
v3rb0 Posted July 7, 2006 Report Share Posted July 7, 2006 (edited) kverija rezultāts ir tabula - nevis koks, neiedziļinoties izklausās ka gribi dabūt arā kokveida struktūru. un kāpēc atkal ar 1nu kveriju - taisi ar cik māki Edited July 7, 2006 by v3rb0 Link to comment Share on other sites More sharing options...
AndzX8-842 Posted July 7, 2006 Author Report Share Posted July 7, 2006 (edited) Tāpēc, ka ar vairākiem sanāktu tik daudz query, cik users no users tabulas kaut kur, piemēram pie divisions tabulas pieder, ja 100, tad 100 + kaut kas query. Tas ir nedaudz nenormāli un ja vairāki cilvēki apskatās to pašu lapu, tad ir klusais vājprāts. Edited July 7, 2006 by AndzX8-842 Link to comment Share on other sites More sharing options...
Delfins Posted July 7, 2006 Report Share Posted July 7, 2006 takš parastais joins... PS: join var arī atstāt ar oldskuul `from t1, t2` + `where t1.f = t2.f` (~ tas pats vien būs) Link to comment Share on other sites More sharing options...
Aleksandrs Posted July 7, 2006 Report Share Posted July 7, 2006 Rakstot pēc teksta, sanāca kaut kas tāds: SELECT f.*,u.*,d.*,m.* FROM fleet f LEFT JOIN users u ON f.fleet_commander_id=u.id LEFT JOIN division d ON f.id=d.fleet_id LEFT JOIN dmembers m ON d.id=m.division_id LEFT JOIN users s ON s.id=m.division_member_id Link to comment Share on other sites More sharing options...
hmnc Posted July 8, 2006 Report Share Posted July 8, 2006 Andz - ja tev vajag linkot tabulas pēc noteiktiem parametriem (users.id -> fleet.user_id) tad bez lefjoiniem neiztiksi. Aleksandra piemērs izskatās visprastākais, bet manuprāt vispareizākais :) iesaku palasīt par tabulu joinošanu. Link to comment Share on other sites More sharing options...
Recommended Posts