Requete SQL

Requete SQL - SQL/NoSQL - Programmation

Marsh Posté le 02-11-2005 à 11:46:24    

Je dois copier une table A dans la table B, je suis donc parti dans une requete  
 

Code :
  1. insert into table B
  2. select * from table A


 
La ou ca se complique, c'est que je dois récupérer à partir d'un champ code de ma table A un id contenue dans une table C. Et ensuite insérer l'id au lieu du code dans la table B.
 
Je ne sais pas si c'est très clair. Mais j'aimerais savoir comment faire?


Message édité par lapartdombre le 02-11-2005 à 11:49:48
Reply

Marsh Posté le 02-11-2005 à 11:46:24   

Reply

Marsh Posté le 02-11-2005 à 11:50:25    

insert into table B
select C.id,A.chp1,chp2...,chpn
from A inner join C on A.code=C.code
 
c'est ca que tu veux faire?

Reply

Marsh Posté le 02-11-2005 à 12:01:44    

oui je pense mais est ce que ca marche si je fais un where a;code=c.code au lieu du inner join. Quelle est la différence

Reply

Marsh Posté le 02-11-2005 à 12:10:43    

Dans ma table j'ai ma clé primaire. Comment faire pour la renseigner en l'incrémentant??

Reply

Marsh Posté le 02-11-2005 à 12:21:07    

lapartdombre a écrit :

oui je pense mais est ce que ca marche si je fais un where a;code=c.code au lieu du inner join. Quelle est la différence


oui

Reply

Marsh Posté le 02-11-2005 à 12:44:40    

Quelle est la différence entre faire un inner join ou un simple where???

Reply

Marsh Posté le 02-11-2005 à 12:51:49    

INNER JOIN = norme SQL
 
WHERE = souplesse ou liberté prise pas certains éditeurs dont Oracle :)

Reply

Marsh Posté le 02-11-2005 à 12:53:23    

INNER JOIN est egalement plus rapide

Reply

Marsh Posté le 02-11-2005 à 12:59:49    

orafrance a écrit :

INNER JOIN = norme SQL
 
WHERE = souplesse ou liberté prise pas certains éditeurs dont Oracle :)


 
bien que inner join soit la norme, c'est pas la seul en matière de jointure... La norme c'est [INNER / OUTER / FULL] JOIN
cependant la jointure en passant par le where fait partie de la norme aussi!  
le INNER JOIN est plus rapide que dans certain cas, si une requete ne comporte que deux tables, il n'y aura aucune différences! par contre s'ils y en plus que deux, alors la c'est plus performant...
 
Cependant faut faire attention avec INNER JOIN, c'est encore malheureux a dire, mais certain sgbd ne le supporte pas => tout ce qui est inférieur à ORACLE 9i ne supporte pas le INNER JOIN

Reply

Marsh Posté le 02-11-2005 à 13:11:37    

Est ce possible de faire plusieurs inner join pour faire une jointure entre 3 tables

Reply

Marsh Posté le 02-11-2005 à 13:11:37   

Reply

Marsh Posté le 02-11-2005 à 13:22:49    

oui
lis une doc stp

Reply

Marsh Posté le 02-11-2005 à 14:03:15    

betsamee a écrit :

INNER JOIN est egalement plus rapide


 
pas sous Oracle  :p

Reply

Marsh Posté le 02-11-2005 à 20:16:43    

conceptuellement inner join est plus rapide si on suit la technique de base! mais bon, je suppose que oracle à optimisé l'autre moyen comme implémenté depuis le début sur les bd oracle ;-)

Reply

Marsh Posté le 02-11-2005 à 20:54:10    

Les jointures peuvent être faites de pas mal de façons, de toute façon tout SGBD correct se doit de chercher le moyen le plus efficace, quelle que soit la syntaxe employée.

Reply

Sujets relatifs:

Leave a Replay

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