Identifier la clause where succès dans requête SQL

Identifier la clause where succès dans requête SQL - SQL/NoSQL - Programmation

Marsh Posté le 18-09-2018 à 14:12:16    

Bonjour,
 
J'ai 2 tables de commentaires qui ont une structure différente: COMMENTS1 et COMMENTS2
Une recherche de rapport peut s'effectuer à partir d'un motclé sur un commentaire et doit donc chercher dans les 2 tables.
 
Ma question: comment savoir quelle table de commentaire contient le motclé?
 
 
select * from 'RAPPORT' where (exists (select * from `COMMENTS1` where `RAPPORT`.`id` = `COMMENTS1`.`id` and `commentaire` like '%motcle%')  or exists (select * from `COMMENTS2` where `RAPPORT`.`id` = `COMMENTS2`.`id` and `commentaire` like '%motcle%'))
 
Merci

Reply

Marsh Posté le 18-09-2018 à 14:12:16   

Reply

Marsh Posté le 18-09-2018 à 15:17:47    

Essaye de nous faire un fiddle pour qu'on voie un peu avec quelques données...
http://sqlfiddle.com
 
Tu peux sans doute faire deux jointure ouverte et récupérer les id, un truc du genre :

Code :
  1. SELECT `RAPPORT`.*, `COMMENTS1`.`id` AS c1_exists, `COMMENTS1`.`id` AS c2_exists
  2. FROM `RAPPORT`
  3. LEFT JOIN `COMMENTS1` ON  `COMMENTS1`.`id` = `RAPPORT`.`id` AND `COMMENTS1`.`commentaire` LIKE '%motcle%'
  4. LEFT JOIN `COMMENTS2` ON  `COMMENTS2`.`id` = `RAPPORT`.`id` AND `COMMENTS2`.`commentaire` LIKE '%motcle%'
  5. WHERE `COMMENTS1`.`id` IS NOT NULL OR `COMMENTS2`.`id` IS NOT NULL


---------------
D3
Reply

Marsh Posté le 19-09-2018 à 18:01:43    

Le OR est très couteux. Il faut l'éviter. Tu peux passer par un UNION.


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed