atikons Posted March 1, 2007 Report Share Posted March 1, 2007 Taisu skolai darbu iekš MySQl un nevaru SELECT'ot vairāk par 3 tabulām. Relācijas: Kods, ko ģenerē proga DBA central for MySQL. SELECT `studenti`.`name`, `studenti`.`surname`, `tests`.`atzime`, `prieksmets`.`nosaukums` FROM `tests` INNER JOIN `studenti` ON (`studenti`.`id` = `tests`.`studenta_id`) INNER JOIN `prieksmets` ON (`prieksmets`.`id` = `tests`.`prieksmeta_id`) Šis strādā, jo selekto tikai trīs tabulas. SELECT `studenti`.`name`, `studenti`.`surname`, `tests`.`atzime`, `prieksmets`.`nosaukums`, `pasniedzeji`.`name_pas`, `pasniedzeji`.`surname_pas` FROM `tests` INNER JOIN `studenti` ON (`studenti`.`id` = `tests`.`studenta_id`) INNER JOIN `prieksmets` ON (`prieksmets`.`id` = `tests`.`prieksmeta_id`) INNER JOIN `prieksmets` ON (`prieksmets`.`id` = `pasniedzejs_prieksmets`.`prieksmeta_id`) INNER JOIN `pasniedzeji` ON (`pasniedzeji`.`id` = `pasniedzejs_prieksmets`.`pasniedzeja_id`) Bet šis nestrādā un izmet erroru - Not unique table/alias: ‘prieksmets’. Pats padomāju, tiešām tabulai 'prieksmets' abās pusēs vaidojas plūsmas, kas savā stārpā nevienojas kopā. Plūsma Studenti+tests+prieksmets nevienojas kopā ar plūsmu pasniedzeji+pasniedzeji_prieksmets+prieksmets. Pa vidu tam ir tabula prieksmets. Un jautājums tāds, kā panākt lai viss darbotos? Manuprāt, vajag kaut kā vienā plūsmā prieksmets.id savienot ar otras plūsmas prieksmets.id. Neveidojās ķēde, pārtrūkst un tie divi posmi ir jāsadabū kopā. Kā? Varbūt var kaut kā savādāk? Select select'ā vai kā savādāk? Link to comment Share on other sites More sharing options...
bubu Posted March 1, 2007 Report Share Posted March 1, 2007 Aliasēt tabulas vajag: SELECT `studenti`.`name`, `studenti`.`surname`, `tests`.`atzime`, `prieksmets1`.`nosaukums`, // vai arī prieksmets2, nezinu kuru tev tur vajag `pasniedzeji`.`name_pas`, `pasniedzeji`.`surname_pas` FROM `tests` INNER JOIN `studenti` ON (`studenti`.`id` = `tests`.`studenta_id`) INNER JOIN `prieksmets` AS prieksmets1 ON (`prieksmets1`.`id` = `tests`.`prieksmeta_id`) INNER JOIN `prieksmets` AS prieksmets2 ON (`prieksmets2`.`id` = `pasniedzejs_prieksmets`.`prieksmeta_id`) INNER JOIN `pasniedzeji` ON (`pasniedzeji`.`id` = `pasniedzejs_prieksmets`.`pasniedzeja_id`) Link to comment Share on other sites More sharing options...
atikons Posted March 1, 2007 Author Report Share Posted March 1, 2007 (edited) 1054 error Unknown column 'pasniedzejs_prieksmets.prieksmeta_id' in 'ON clause' ! Hmm... es no Alias ņe bum bum. grrrr Edited March 1, 2007 by atikons Link to comment Share on other sites More sharing options...
bubu Posted March 1, 2007 Report Share Posted March 1, 2007 Manuprāt tu nevari izmantot kolonnas, kuras nav bijušas tabulās, kuras lietotas JOIN argumentos virs tekošā JOIN'a. Tb pasniedzejs_prieksmets tabula ir par zemu JOINā. Hmm... es no Alias ņe bum bum. grrrr Nu tad RTFM: http://dev.mysql.com/doc/refman/5.0/en/select.html#id3062604 Link to comment Share on other sites More sharing options...
atikons Posted March 1, 2007 Author Report Share Posted March 1, 2007 (edited) Manuprāt tu nevari izmantot kolonnas, kuras nav bijušas tabulās, kuras lietotas JOIN argumentos virs tekošā JOIN'a. Tb pasniedzejs_prieksmets tabula ir par zemu JOINā.Kā saprast - tabula ir par zemu? Edited March 1, 2007 by atikons Link to comment Share on other sites More sharing options...
andrisp Posted March 1, 2007 Report Share Posted March 1, 2007 Varbūt man kaut kas ar redzi nav :), bet vai tev vispār kaut kur tiek piejoinota tā tabula `pasniedzejs_prieksmets` ? Link to comment Share on other sites More sharing options...
atikons Posted March 2, 2007 Author Report Share Posted March 2, 2007 Ir, pēdējās 2 rindas. Skatīt iekavās. Link to comment Share on other sites More sharing options...
andrisp Posted March 2, 2007 Report Share Posted March 2, 2007 Bet vai tad tabulai vispirms nav jāparādas iekš FROM vai INNER JOIN, lai to vispār varētu izmantot? Link to comment Share on other sites More sharing options...
atikons Posted March 2, 2007 Author Report Share Posted March 2, 2007 (edited) hmm.. domāju, ka n�“, jo no tās tabulas es neko neselektoju. Tā tabula domāta tikai, lai savienotu divas citas tabulas. Izm�“ģināju, tāpat neiet. Edited March 2, 2007 by atikons Link to comment Share on other sites More sharing options...
bubu Posted March 2, 2007 Report Share Posted March 2, 2007 Ah tiešām, es ar nepamanīju. Tā pasniedzejs_prieksmets tabula tak nav selektēta nemaz FROMā vai JOINā. Tāpēc arī tāda kļūda. Link to comment Share on other sites More sharing options...
atikons Posted March 2, 2007 Author Report Share Posted March 2, 2007 Nu izmēģināju pie FROM pielikt - nekā! Link to comment Share on other sites More sharing options...
Recommended Posts