Titre Fenetre
Contenu Fenetre
Connexion
  • Se souvenir de moi
J'ai oublié mon mot de passe
BDGest'Arts, BDGest'ival, c'est parti !
Image Image Image

Modif de requetes SQL (suite au passage en V6)

Attention cette version de BDGest n'est plus maintenue depuis le 15/03/2021. Les version "officielles" sont BDGest Online et BDGest Mobile.

Modif de requetes SQL (suite au passage en V6)

Messagede StephaneA » 18/07/2007 12:35

Certaines requetes ne fonctionnent plus depuis le passage en V6.

Il s'agit de :
Auteurs sans Album ni Para-BD

SELECT *
FROM auteurs AS d
WHERE NOT (SELECT COUNT(*)
FROM Albums AS a
WHERE a.IdScenariste = d.IdAuteur
OR a.IdDessinateur = d.IdAuteur
OR a.IdColoriste = d.IdAuteur)
AND NOT (SELECT COUNT(*)
FROM collaborateurs AS c
WHERE c.IdAuteur = d.IdAuteur)
AND NOT (SELECT COUNT(*)
FROM acheter AS b
WHERE b.IdScenariste = d.IdAuteur
OR b.IdDessinateur = d.IdAuteur
OR b.IdColoriste = d.IdAuteur)
AND NOT (SELECT COUNT(*)
FROM exlibris AS c
WHERE c.IdDessinateur = d.IdAuteur);


Ainsi que :
Séries sans Album

SELECT SERIES.Titre, ACHETER.IdSerie, ALBUMS.IdSerie
FROM ((SERIES
LEFT JOIN ACHETER
ON SERIES.IdSerie = ACHETER.IdSerie)
LEFT JOIN ALBUMS
ON SERIES.IdSerie = ALBUMS.IdSerie)
LEFT JOIN EXLIBRIS
ON SERIES.IDSerie = EXLIBRIS.IdSerie
WHERE (ACHETER.IdSerie Is Null)
AND (ALBUMS.IdSerie Is Null)
AND (EXLIBRIS.IdSerie Is Null);


Quelqu'un sait-il quels changements je dois faire afin de faire fonctionner ces requetes?

De plus, afin de reparer une bourde je cherche une requete permettant de faire passer les infos contenues dans le champ perso 1 dans le champ ISBN :oops:
Avatar de l’utilisateur
StephaneA
Modérateur
Modérateur
 
Messages: 1961
Inscription: 03/07/2002
Localisation: F-91 Sainte-Geneviève-des-Bois
Age: 51 ans

Modif de requetes SQL (suite au passage en V6)

Messagede StephaneA » 19/07/2007 19:15

Tous les pros du SQL se font dorer sur la plage en ce moment?

De plus, afin de réparer une bourde je cherche une requête permettant de faire passer les infos contenues dans le champ perso 1 dans le champ ISBN :oops:

Dans le même genre une requête qui fait passer le champ Perso 3 vers Le champ Achevé d'imprimer m'interresserait aussi fortement. :oops:
Avatar de l’utilisateur
StephaneA
Modérateur
Modérateur
 
Messages: 1961
Inscription: 03/07/2002
Localisation: F-91 Sainte-Geneviève-des-Bois
Age: 51 ans

Modif de requetes SQL (suite au passage en V6)

Messagede BDGest » 19/07/2007 19:51

La c'est un peu compliqué car le champ achevé d'imprimé est un champ date alors que le champ perso 3 est un champ texte donc l'update ne peux pas marcher dans ce sens
C'est parce que la vitesse de la lumière est supérieure à celle du son que certains ont l'air brillant avant d'avoir l'air con.
Avatar de l’utilisateur
BDGest
Administrateur du site
Administrateur du site
 
Messages: 14631
Inscription: 02/07/2002
Localisation: Besançon
Age: 53 ans

Modif de requetes SQL (suite au passage en V6)

Messagede StephaneA » 19/07/2007 20:28

La c'est un peu compliqué car le champ achevé d'imprimé est un champ date alors que le champ perso 3 est un champ texte donc l'update ne peux pas marcher dans ce sens

Même si toutes mes entrées dans le champ Perso 3 sont au format MM/AAAA ?
Avatar de l’utilisateur
StephaneA
Modérateur
Modérateur
 
Messages: 1961
Inscription: 03/07/2002
Localisation: F-91 Sainte-Geneviève-des-Bois
Age: 51 ans

Modif de requetes SQL (suite au passage en V6)

Messagede Pascal Forhan » 19/07/2007 21:14

Oui, transformer un champ texte en date, c'est pas si simple.

Pour ta deuxième requête, sachant que les tables ACHETER et EXLIBRIS n'existent plus, voila ce uqe ça donne pour fonctionner:
[cpp]SELECT SERIES.Titre, ALBUMS.IdSerie
FROM SERIES
LEFT JOIN ALBUMS
ON SERIES.IdSerie = ALBUMS.IdSerie
WHERE (ALBUMS.IdSerie Is Null);[/cpp]

Pour renvoyer l'isbn d'où il vient:
[cpp]update albums set reference = perso1;[/cpp]
Avatar de l’utilisateur
Pascal Forhan
BDémoniaque
BDémoniaque
 
Messages: 795
Inscription: 03/07/2002
Age: 51 ans

Modif de requetes SQL (suite au passage en V6)

Messagede Pascal Forhan » 19/07/2007 21:20

Pour ta première requête, j'ai pas compris pourquoi le count(*) ne marche pas.
Cette requête semble donner la réponse voulue:
[cpp]SELECT *
FROM auteurs AS d
WHERE NOT (SELECT count(a.IdScenariste)
FROM Albums AS a
WHERE a.IdScenariste = d.IdAuteur
OR a.IdDessinateur = d.IdAuteur
OR a.IdColoriste = d.IdAuteur)
AND NOT (SELECT count(c.IdAuteur)
FROM collaborateurs AS c
WHERE c.IdAuteur = d.IdAuteur) ;[/cpp]
Avatar de l’utilisateur
Pascal Forhan
BDémoniaque
BDémoniaque
 
Messages: 795
Inscription: 03/07/2002
Age: 51 ans

Modif de requetes SQL (suite au passage en V6)

Messagede StephaneA » 19/07/2007 21:37

Merci Pascal, j'en déduit que tu n'es pas en vacances? Tu couves ton nid? ;)

Le premier code (Séries) fonctionne impec.

Le second concernant l'iSBN aussi, mais il n'élimine pas ce qui était saisi dans le champ ISBN (celui-ci est donc renseigné deux fois maintenant)

Quant au code pour les auteurs il doit manquer un truc car le résultat me laisse apparaître des auteurs sans album mais avec para-bd. De plus la colonne surnom donne non pas le surnom mais le nom de l'image associée. Bizarre...
Avatar de l’utilisateur
StephaneA
Modérateur
Modérateur
 
Messages: 1961
Inscription: 03/07/2002
Localisation: F-91 Sainte-Geneviève-des-Bois
Age: 51 ans

Modif de requetes SQL (suite au passage en V6)

Messagede Pascal Forhan » 19/07/2007 22:03

et ouais, c'est pas encore les vacances.
Pour le perso1 qui est toujours rempli:
[cpp]update album set perso1=null;[/cpp]
Pour les auteurs, j'ai effectivement oublié le parabd:
[cpp] SELECT *
FROM auteurs AS d
WHERE NOT (SELECT count(a.IdScenariste)
FROM Albums AS a
WHERE a.IdScenariste = d.IdAuteur
OR a.IdDessinateur = d.IdAuteur
OR a.IdColoriste = d.IdAuteur)
AND NOT (SELECT count(c.IdAuteur)
FROM collaborateurs AS c
WHERE c.IdAuteur = d.IdAuteur)
AND NOT (SELECT count(p.IdAuteur)
FROM parabd As p
WHERE p.IdAuteur = d.IdAuteur);[/cpp]

de même pour les albums:
[cpp]SELECT SERIES.Titre, PARABD.IdSerie, ALBUMS.IdSerie
FROM (SERIES
LEFT JOIN ALBUMS
ON SERIES.IdSerie = ALBUMS.IdSerie)
LEFT JOIN PARABD
ON SERIES.IDSerie = PARABD.IdSerie
WHERE (ALBUMS.IdSerie Is Null)
AND (PARABD.IdSerie Is Null);[/cpp]
Avatar de l’utilisateur
Pascal Forhan
BDémoniaque
BDémoniaque
 
Messages: 795
Inscription: 03/07/2002
Age: 51 ans

Modif de requetes SQL (suite au passage en V6)

Messagede eBry » 20/07/2007 00:53

Pour ta deuxième requête, sachant que les tables ACHETER et EXLIBRIS n'existent plus, voila ce uqe ça donne pour fonctionner:
[cpp]SELECT SERIES.Titre, ALBUMS.IdSerie
FROM SERIES
LEFT JOIN ALBUMS
ON SERIES.IdSerie = ALBUMS.IdSerie
WHERE (ALBUMS.IdSerie Is Null);[/cpp]

Une variante qui donne les ID série des séries sans album :
[cpp]SELECT IdSerie, Titre
FROM Series
WHERE IdSerie NOT IN (SELECT IdSerie FROM Albums)
ORDER BY Titre[/cpp]
Monsieur Rathbone, on m'a dit le plus grand bien de vous. Seulement, chacun doit rester sur ses gardes et ne pas esquisser le moindre geste. Je vous sers un scotch ?
Avatar de l’utilisateur
eBry
BDGestiste
BDGestiste
 
Messages: 4157
Inscription: 15/12/2002
Localisation: Belgique
Age: 58 ans

Modif de requetes SQL (suite au passage en V6)

Messagede StephaneA » 20/07/2007 06:27

Pour le perso1 qui est toujours rempli:
[cpp]update album set perso1=null;[/cpp]

Pour cette requête j'ai le message d'erreur suivant :
[cpp]Echec de l'ouverture du fichier.

Description = Le moteur de base de données Microsoft Jet ne peut pas trouver la table ou la requête source 'album'. Assurez-vous qu'elle existe et qu'elle est correctement orthographiée.
Source = Microsoft JET Database Engine
Help Context = 5003011
SQL State = 3078
Error Number = -2147217865
Native Error Number = -524420377


Requête exécutée sur la base :
Texte de la requête :update album set perso1=null;
Nombre de paramètres :=0

IEWDOLDB=111005
Module=
Version=<11.00Az>

Version du MDAC = <2.81.1117.0>.



[Current Recordset parameters]
Wanted = LockType = , Location = , Type = , Capacities =
Got = LockType = , Location = , Type = , Capacities =



[Connection parameters]
DataSource =
Initial Catalog = <>
Provider =
User = <>
Password = <>
Extended Info = <>
Access =

[Connection settings]
ConnectionTimeout = <-1>
CommandTimeout = <0>

[Data format]
Query Parameter Checked = <0> = <>
Query Parameter Needing conversion = <0> = <>
DecimalSeparator =
DateFormat = <>

[Cursor settings Match]
LockType = , Location = , Type = , Capacities =
LockType = , Location = , Type = , Capacities =
LockType = , Location = , Type = , Capacities =
[/cpp]

Sinon le reste fonctionne parfaitement, merci beaucoup.

Quant au champ Perso3 -> Achevé d'imprimer, ben je vais m'y coller à la main ;)
Avatar de l’utilisateur
StephaneA
Modérateur
Modérateur
 
Messages: 1961
Inscription: 03/07/2002
Localisation: F-91 Sainte-Geneviève-des-Bois
Age: 51 ans

Modif de requetes SQL (suite au passage en V6)

Messagede Pascal Forhan » 20/07/2007 08:05

faute....
Faut mettre un s à "albums"
C'est dur la nuit :mrgreen:
Avatar de l’utilisateur
Pascal Forhan
BDémoniaque
BDémoniaque
 
Messages: 795
Inscription: 03/07/2002
Age: 51 ans

Modif de requetes SQL (suite au passage en V6)

Messagede Gwenhwyfar » 20/07/2007 19:28

Exemple de convertion texte => date en Access :
update test set [date] = CDate([texte])

Besoin d'une DBA ?
;)
Only two things are infinite, the universe and human stupidity. I'm not sure about the universe ...
A. Einstein
Avatar de l’utilisateur
Gwenhwyfar
Quebec City
Quebec City
 
Messages: 2197
Inscription: 31/10/2006
Localisation: Pas loin des Kantess ;)
Age: 55 ans

Modif de requetes SQL (suite au passage en V6)

Messagede StephaneA » 20/07/2007 19:36

Ayé pour le passage Champ perso 3 -> Achevé d'imprimer... J'ai tout fait au couper/coller.
Avatar de l’utilisateur
StephaneA
Modérateur
Modérateur
 
Messages: 1961
Inscription: 03/07/2002
Localisation: F-91 Sainte-Geneviève-des-Bois
Age: 51 ans

Modif de requetes SQL (suite au passage en V6)

Messagede Pascal Forhan » 20/07/2007 23:38

Exemple de convertion texte => date en Access :
update test set [date] = CDate([texte])

Besoin d'une DBA ?
;)

Désolé, je connais pas access en tant que base de données SQL, quasiment tout peut se faire en VB ce qui complique les choses quand on veut faire du SQL, ou pour trouver des infos.
On m'aurait parlé de Postgresql, Oracle, mySql ou SqlServer, j'aurais pu plus facilement répondre :wink:

Sinon, pour le CDate, on peut définir le format car en l'occurence on a que le mois et l'année et pas le jour, en plus comment on fait pour differencier un "dd/mm/yyyy" d'un "mm/dd/yyyy" ?
Avatar de l’utilisateur
Pascal Forhan
BDémoniaque
BDémoniaque
 
Messages: 795
Inscription: 03/07/2002
Age: 51 ans

Modif de requetes SQL (suite au passage en V6)

Messagede Gwenhwyfar » 21/07/2007 20:32

Bonne question ...

Je ne suis pas une spécialiste d'Access, que je considère plus comme un gadget bureautique que comme une base de donnée (Je vais encore me faire des amis :siffle:). J'ai juste fait un test avec des données tronquées MM/YYYY et CDate a automatiquement transformé ça en 01/MM/YYYY.

Les explications de l'aide d'Access sont les suivantes :
CDate recognizes date literals and time literals as well as some numbers that fall within the range of acceptable dates. When converting a number to a date, the whole number portion is converted to a date. Any fractional part of the number is converted to a time of day, starting at midnight.

CDate recognizes date formats according to the locale setting of your system. The correct order of day, month, and year may not be determined if it is provided in a format other than one of the recognized date settings. In addition, a long date format is not recognized if it also contains the day-of-the-week string.
Only two things are infinite, the universe and human stupidity. I'm not sure about the universe ...
A. Einstein
Avatar de l’utilisateur
Gwenhwyfar
Quebec City
Quebec City
 
Messages: 2197
Inscription: 31/10/2006
Localisation: Pas loin des Kantess ;)
Age: 55 ans

Modif de requetes SQL (suite au passage en V6)

Messagede Pascal Forhan » 21/07/2007 22:36

Je ne suis pas une spécialiste d'Access, que je considère plus comme un gadget bureautique que comme une base de donnée (Je vais encore me faire des amis :siffle:).

Pas de ma part en tout cas :mrgreen:
Je partage complètement ce point de vue....

Merci pour les précisions, je serais moins bête ce soir :wink:
Avatar de l’utilisateur
Pascal Forhan
BDémoniaque
BDémoniaque
 
Messages: 795
Inscription: 03/07/2002
Age: 51 ans

Modif de requetes SQL (suite au passage en V6)

Messagede BDGest » 23/07/2007 08:43

C'est peut être un gadget mais pour une DB locale et perso c'est trés pratique ;) J'imagine la tête des utilisateurs de BD Gest' sur dans la procédure d'install je demandais d'installer un serveur Oracle :mrgreen: Le prix de la licence serait sympathique aussi :mrgreen:
C'est parce que la vitesse de la lumière est supérieure à celle du son que certains ont l'air brillant avant d'avoir l'air con.
Avatar de l’utilisateur
BDGest
Administrateur du site
Administrateur du site
 
Messages: 14631
Inscription: 02/07/2002
Localisation: Besançon
Age: 53 ans

Modif de requetes SQL (suite au passage en V6)

Messagede johnkalak » 23/07/2007 08:48

C'est peut être un gadget mais pour une DB locale et perso c'est trés pratique ;)

Même dans le cadre pro on fait des choses étonnantes avec access. Evidemment dès que la base prend de l'ampleur c'est un poil plus compliqué mais essayer de trouver un outil si bon marché et aussi souple surtout pour des novices....
Avatar de l’utilisateur
johnkalak
Expert BDGestiste
Expert BDGestiste
 
Messages: 11491
Inscription: 19/11/2004
Localisation: F-59 Villeneuve d'Ascq
Age: 47 ans

Modif de requetes SQL (suite au passage en V6)

Messagede BDGest » 23/07/2007 08:51

Access est trés bien tant que tu ne veux pas gérer plusieurs accès concurents à la même base.
C'est parce que la vitesse de la lumière est supérieure à celle du son que certains ont l'air brillant avant d'avoir l'air con.
Avatar de l’utilisateur
BDGest
Administrateur du site
Administrateur du site
 
Messages: 14631
Inscription: 02/07/2002
Localisation: Besançon
Age: 53 ans

Modif de requetes SQL (suite au passage en V6)

Messagede Gwenhwyfar » 23/07/2007 09:05

Même dans le cadre pro on fait des choses étonnantes avec access. Evidemment dès que la base prend de l'ampleur c'est un poil plus compliqué mais essayer de trouver un outil si bon marché et aussi souple surtout pour des novices....


En base locale, je veux bien. Et encore ...
Tout dépend aussi de ce que tu entends par "souple pour les novices".
Des apprentis sorciers qui, en quelques clics de souris, se créaient des bases Access en local avec des tables liées vers des bases Oracle ou SQLServer, mais sans rien comprendre à la façon dont ça fonctionne derrière, j'en ai vu pas mal ...
Only two things are infinite, the universe and human stupidity. I'm not sure about the universe ...
A. Einstein
Avatar de l’utilisateur
Gwenhwyfar
Quebec City
Quebec City
 
Messages: 2197
Inscription: 31/10/2006
Localisation: Pas loin des Kantess ;)
Age: 55 ans

Suivante

Retourner vers BD Gest' 7 (Obsolète)

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités