Jump to content
php.lv forumi

Savienot vairākas tabulas


atikons

Recommended Posts

Taisu skolai darbu iekš MySQl un nevaru SELECT'ot vairāk par 3 tabulām.

Relācijas: rel.jpg

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

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

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 by atikons
Link to comment
Share on other sites

×
×
  • Create New...