ajout d'une valeur dans résultat d'une requête d'une autre table
ajout d'une valeur dans résultat d'une requête d'une autre table - SQL/NoSQL - Programmation
MarshPosté le 05-06-2017 à 11:59:49
bonjour , je vais essayer d'être le plus clair possible dans ma demande
j'ai une requête SQL qui me ramène une liste de colonne à afficher depuis une table
SELECT vd.id, 'EPISODE' AS videoType, vd.title, vd.title_original AS originalTitle, vd.title_sort AS sortTitle, vd.publication_year AS videoYear, vd.release_date as releaseDate, null AS seriesId, vd.season_id AS seasonId, null AS season, vd.episode AS episode , vd.watched AS watched, vd.create_timestamp as createTimestamp , vd.plot, vd.status FROM videodata vd WHERE vd.episode>-1
id videoType title originalTitle sortTitle videoYear releaseDate seriesId seasonId season episode watched createTimestamp plot status 550 EPISODE La danse des dragons The Dance of Dragons danse des dragons -1 2015-06-07 1 9 1 2016-03-27 13:22 Acculé dans... DONE 551 EPISODE Le fils de la harpie The Sons Of The Harpy fils de la harpie -1 2015-05-03 1 4 1 2016-03-27 13:22 Les Moineau... DONE
je souhaiterais ajouter une colonne (à la réponse de la requête et pas à la table) qui est issue d'une double jointure
select (select vd.title from videodata vd where (vd.id = mv.videodata_id and episode > -1) ) as Title, (select vd.id from videodata vd where (vd.id = mv.videodata_id and episode > -1) ) as VD_id, (select l.base_directory from library l where l.id = sd.library_id) as library_base from mediafile_videodata mv join stage_file sf on mv.mediafile_id = sf.mediafile_id left join stage_directory sd on sd.id = sf.directory_id
# Title VD_id library_base La danse des dragons 550 T: /video/Film Le fils de la harpie 551 T: /video/Film
pour obtenir :
id videoType title originalTitle sortTitle videoYear releaseDate seriesId seasonId season episode watched createTimestamp plot status library_base 550 EPISODE La danse des dragons The Dance of Dragons danse des dragons -1 2015-06-07 1 9 1 2016-03-27 13:22 Acculé dans... DONE T: /video/Film 551 EPISODE Le fils de la harpie The Sons Of The Harpy fils de la harpie -1 2015-05-03 1 4 1 2016-03-27 13:22 Les Moineau... DONE T: /video/Film
bien entendu je ne souhaites ajouter que la colonne library_base à la 1ère requête
sauf à dupliquer pour toutes les colonnes que je veux afficher et qui sont dans la table videodata ( vd.id, 'EPISODE' AS videoType, vd.title, vd.title_original AS originalTitle, ............) avec à chaque colonne un nouveau select (select vd.title from videodata vd where (vd.id = mv.videodata_id and episode > -1) ) as Title,
je n'ai pas trouvé comment faire pour simplifier
merci de votre aide
NB: le résultat de la requête est passé ensuite à .json qui va transmettre le résultat , je n'ai pas la possibilité d'ajouter du code - php ou autre au milieun ni d'ajouter une table intermédiaire (ce qui serait le plus simple) , d'ou la recherche par le SQL seul
Message édité par jluc2808 le 05-06-2017 à 12:06:02
Marsh Posté le 05-06-2017 à 11:59:49
bonjour ,
je vais essayer d'être le plus clair possible dans ma demande
j'ai une requête SQL qui me ramène une liste de colonne à afficher depuis une table
SELECT vd.id, 'EPISODE' AS videoType, vd.title, vd.title_original AS originalTitle, vd.title_sort AS sortTitle, vd.publication_year AS videoYear, vd.release_date as releaseDate, null AS seriesId, vd.season_id AS seasonId, null AS season, vd.episode AS episode , vd.watched AS watched, vd.create_timestamp as createTimestamp , vd.plot, vd.status FROM videodata vd WHERE vd.episode>-1
id videoType title originalTitle sortTitle videoYear releaseDate seriesId seasonId season episode watched createTimestamp plot status
550 EPISODE La danse des dragons The Dance of Dragons danse des dragons -1 2015-06-07 1 9 1 2016-03-27 13:22 Acculé dans... DONE
551 EPISODE Le fils de la harpie The Sons Of The Harpy fils de la harpie -1 2015-05-03 1 4 1 2016-03-27 13:22 Les Moineau... DONE
je souhaiterais ajouter une colonne (à la réponse de la requête et pas à la table) qui est issue d'une double jointure
select (select vd.title from videodata vd where (vd.id = mv.videodata_id and episode > -1) ) as Title,
(select vd.id from videodata vd where (vd.id = mv.videodata_id and episode > -1) ) as VD_id,
(select l.base_directory from library l where l.id = sd.library_id) as library_base from mediafile_videodata mv
join stage_file sf on mv.mediafile_id = sf.mediafile_id
left join stage_directory sd on sd.id = sf.directory_id
# Title VD_id library_base
La danse des dragons 550 T: /video/Film
Le fils de la harpie 551 T: /video/Film
pour obtenir :
id videoType title originalTitle sortTitle videoYear releaseDate seriesId seasonId season episode watched createTimestamp plot status library_base
550 EPISODE La danse des dragons The Dance of Dragons danse des dragons -1 2015-06-07 1 9 1 2016-03-27 13:22 Acculé dans... DONE T: /video/Film
551 EPISODE Le fils de la harpie The Sons Of The Harpy fils de la harpie -1 2015-05-03 1 4 1 2016-03-27 13:22 Les Moineau... DONE T: /video/Film
bien entendu je ne souhaites ajouter que la colonne library_base à la 1ère requête
sauf à dupliquer pour toutes les colonnes que je veux afficher et qui sont dans la table videodata ( vd.id, 'EPISODE' AS videoType, vd.title, vd.title_original AS originalTitle, ............)
avec à chaque colonne un nouveau select
(select vd.title from videodata vd where (vd.id = mv.videodata_id and episode > -1) ) as Title,
je n'ai pas trouvé comment faire pour simplifier
merci de votre aide
NB: le résultat de la requête est passé ensuite à .json qui va transmettre le résultat , je n'ai pas la possibilité d'ajouter du code - php ou autre au milieun ni d'ajouter une table intermédiaire (ce qui serait le plus simple) , d'ou la recherche par le SQL seul
Message édité par jluc2808 le 05-06-2017 à 12:06:02