Calade
Messages postés1207Date d'inscriptiondimanche 20 avril 2003StatutMembreDernière intervention 4 juin 2016
-
16 janv. 2013 à 14:34
Calade
Messages postés1207Date d'inscriptiondimanche 20 avril 2003StatutMembreDernière intervention 4 juin 2016
-
18 janv. 2013 à 14:32
Bonjour à tous,
D'abord toutes mes excuses, j'ai déjà posé ce même message dans la section VB, mais n'ayant obtenu aucune réponse, je tente ma chance ici, puisqu'il s'agit d'un problème plus spécifique SQL Server.
Je suis en train de développer un système de recherche par mot-clé pour une application de gestion vidéo. Pour cela j'utilise 2 tables (entre autres):
Une table principale nommé T_KeyWords avec les champs suivants:
KW_ID Integer AutoIncrement PrimaryKey
KW_WORD Varcher(25) n'accepte pas les nuls
Une 2ème table répertorie les seuls mot-clés pour une vidéo précisée, nommé T_Video_Related avec les champs suivants:
KWR_ID Integer AutoIncrement PrimaryKey
KWR_KWID ID de la Table principale
KWR_VIDEO_ID (l'ID repris de ma table principale vidéo qui comprend entre autres les titres).
J'ai 2 requêtes SQL, la 1ère porte sur la table principale et est un simple SELECT ALL.
La seconde sur la table T_Video_Related que voici:
Code :
CREATE PROCEDURE [BH_SP_SEL_KEYWORDS]
@VIDEO_ID AS INTEGER
AS
BEGIN
SELECT KR.*, K.KW_WORD
FROM T_Keywords_Related AS KR
LEFT JOIN T_Keywords AS K ON KR.KWR_KW_ID = K.KW_ID
WHERE KR.KWR_REC_ID = @VIDEO_ID
ORDER BY K.KW_WORD
END
GO
les 2 requêtes sont affichés chacun dans un DataGrid tout simple et là, aucun problème. Celui-ci arrive quand je veux supprimer un mot clé dans la seule table T_Keywords_Related.
Je le fais comme suit: myRecordset.Delete
ce qui supprime effectivement le mot-clé de la table Related MAIS AUSSI de la table principale, ce que je ne veux pas.
1° question: Peut-être y a t'il une autre façon d'écrire ma requête (j'ai essayé avec un RIGHT JOIN avec et sans intervertir les 2 membres de la relation qui suit, mais sans succès).
2)question: J'avais vu et utilisé une option SQL pure qui permet en substance de ne pas tenir compte du JOIN lors du Delete, mais impossible de m'en souvenir ni de la retrouver.
Alors si quelqu'un pouvait me dépanner, merci d'avance.
PS: Je précise que je travaille avec SQL Server 2000
cs_jopop
Messages postés1540Date d'inscriptionlundi 26 mai 2003StatutMembreDernière intervention 1 août 201312 16 janv. 2013 à 15:59
Salut,
après une petite recherche sur mon site favori (MSDN) il semble que ce que tu recherches soit la propriété dynamique Unique Table, nop ? Avec un truc du genre :
yann_lo_san
Messages postés1137Date d'inscriptionlundi 17 novembre 2003StatutMembreDernière intervention23 janvier 201626 17 janv. 2013 à 22:32
Salut,
ALTER PROCEDURE [BH_SP_SEL_KEYWORDS]
@VIDEO_ID AS INTEGER
AS
BEGIN
DECLARE @tmp table
(
// les champs de T_Keywords
);
INSERT INTO @tmp
SELECT K.*
FROM T_Keywords AS K
inner join T_Keywords_Related AS KR ON KR.KWR_KW_ID = K.KW_ID
and KR.KWR_REC_ID = @VIDEO_ID
SELECT KR.*, K.KW_WORD
FROM T_Keywords_Related AS KR
LEFT JOIN @tmp AS K ON KR.KWR_KW_ID = K.KW_ID
WHERE KR.KWR_REC_ID = @VIDEO_ID
ORDER BY K.KW_WORD
END
GO
Calade
Messages postés1207Date d'inscriptiondimanche 20 avril 2003StatutMembreDernière intervention 4 juin 201610 18 janv. 2013 à 09:25
Bonjour à tous et désolé pour le retard,
@jopop, c'était exactement ça et ça marche nickel, je devrais ajouter des barrettes mémoires dans mon propre serveau pour éviter la pagination.
@Malkuth, c'était déjà une procdure stockée et les Table Adapter n'existe pas à ma connaissane en VB6 (mais tu ne pouvais pas deviner que j'étais sous cet ODE).
@yann_lo_san, faire un ALTER TABLE me parait quand même un peu compliqué pour faire un simple DELETE sur un Recordset. Mais il est vrai que je n'ai pas testé.
En tout cas merci de votre réponse à tous les 3.
Calade
Vous n’avez pas trouvé la réponse que vous recherchez ?