probleme de requetes [SQL] - Programmation
Marsh Posté le 24-02-2002 à 16:43:06
Ngok a écrit a écrit : 1. Je voudrai inserer (ou plutot ajouter) un nouveau champ dans une table existante (client). Le nom du nouveau champ est 'status' et est sur 3 caractères. A quoi va ressembler ma requete: INSERT status FROM client ??? (ou je mets le type du champ VARCHAR(3)) |
INSERT INTO client VALUES + les valeurs de tes champs dans l'ordre entre () pour rajouter une ligne (enregistrement),
ALTER TABLE pour rajouter une colonne (champ)
Ngok a écrit a écrit : 2. Je voudrai maintenant faire une selection des clients contenu dans la table transaction (ou faire la listes des clients) mais sans avoir tous les boublons (parce que je peux avoir plusieurs transactions pour le meme clients), il me faut uniquement la liste des clients SELECT transaction.nom FROM transaction WHERE ??? (quel est le critere pour n'avoir que les noms des clients) Ex: DUPOND RICHARD DUPOND DUPOND RICHARD TREMBLAY resultat escompté DUPOND RICHARD TREMBLAY |
SELECT DISTINCT Nom FROM Transaction
Ngok a écrit a écrit : 3. Et pour finir je voudrai affecter (ou appliquer) un status a mon flag (de la table transaction) lorsque le client a un status actif (par exemple 'A' Si le status du client (table client) est de type 'A' je veux mettre toutes les transactions associées a ce client à 'V' (V comme valide) UPDATE transaction.flag SET 'V' WHERE client.nom=transaction.nom AND client.status='S' (je ne sais pas si la syntaxe est bonne mais ca donne une idee du resultat souhaité) |
UPDATE Client, Transaction SET Transaction. Flag = 'V' Where client.nom=transaction.nom AND client.status = 'S'
Ngok a écrit a écrit : Voila vous avez 1 heure pour y repondre |
on te répond pour te rendre service, et non par obligation...
Ngok a écrit a écrit : Merci beaucoup pour les reponses |
De rien
[jfdsdjhfuetppo]--Message édité par Harkonnen--[/jfdsdjhfuetppo]
Marsh Posté le 24-02-2002 à 17:58:50
C'était juste une plaisanterie (pour faire style scolaire)
Ngok a écrit :
--------------------------------------------------------------------------------
Voila vous avez 1 heure pour y repondre
--------------------------------------------------------------------------------
on te répond pour te rendre service, et non par obligation...
Merci beaucoup à toi d'avoir pris la peine de repondre
merci
Marsh Posté le 24-02-2002 à 20:53:32
pardon du dérangement...
La commande suivante fonctionne pas, il me dit que .nom et .status n'existe pas. Je travaille sur deux tables, UPDATE marche que pour une table ? Comment lui indiquer d'utiliser aussi la table client ?
UPDATE transaction SET transaction.flag='S' WHERE transaction.nom=client.nom AND client.status='S'
UPDATE transaction,client SET... marche pas
Où puis-je trouver un jeu d'instruction SQL Oracle ?
Marsh Posté le 24-02-2002 à 21:02:58
Ngok a écrit a écrit : 1. Je voudrai inserer (ou plutot ajouter) un nouveau champ dans une table existante (client). Le nom du nouveau champ est 'status' et est sur 3 caractères. |
Pour insérer une colonne, c'est différent.
Ca peut varier d'un SGBD à un autre mais ca ressemble souvent à ca :
ALTER TABLE client ADD 'status' VARCHAR(3)
Ngok a écrit a écrit : 2. Je voudrai maintenant faire une selection des clients contenu dans la table transaction (ou faire la listes des clients) mais sans avoir tous les boublons (parce que je peux avoir plusieurs transactions pour le meme clients), il me faut uniquement la liste des clients SELECT transaction.nom FROM transaction WHERE ??? (quel est le critere pour n'avoir que les noms des clients) |
SELECT transaction.nom FROM transaction GROUP BY transaction.nom
ou peut être :
SELECT DISTINCT transaction.nom FROM transaction
[jfdsdjhfuetppo]--Message édité par bjbebert--[/jfdsdjhfuetppo]
Marsh Posté le 24-02-2002 à 21:10:53
Le GROUP BY ne fonctionne que pour les fonctions d'agrégation, comme Sum() ou Count(), etc...
Le SELECT DISTINCT est tout à fait adapté à ce genre de cas
[jfdsdjhfuetppo]--Message édité par Harkonnen--[/jfdsdjhfuetppo]
Marsh Posté le 25-02-2002 à 15:24:39
Ngok a écrit a écrit : pardon du dérangement... La commande suivante fonctionne pas, il me dit que .nom et .status n'existe pas. Je travaille sur deux tables, UPDATE marche que pour une table ? |
Oui, hélas
Ngok a écrit a écrit : Comment lui indiquer d'utiliser aussi la table client ? |
cf. 1ere question
[jfdsdjhfuetppo]--Message édité par irulan--[/jfdsdjhfuetppo]
Marsh Posté le 25-02-2002 à 15:27:29
Ngok a écrit a écrit : Question supplementaire Quel logiciel (client oracle) utilisez vous acceder à Oracle ? J'utilise presentement PL/SQL, TOAD ne marche pas il reste gelé a son lancement (si quelqu'un a une solution pour ca) |
Oracle Worksheet (fourni avec Oracle Enterprise Manager)
TOAD : il n'y a aucun message ?
Tu travailles sous quel OS ?
Marsh Posté le 25-02-2002 à 17:24:25
Harkonnen a écrit a écrit : Le GROUP BY ne fonctionne que pour les fonctions d'agrégation, comme Sum() ou Count(), etc... |
LE GROUP BY te regroupe tous les champs identiques. Pratique quand tu as un count() ou autre, mais ca marche très bien sans.
Maintenant, c'est vrai que le DISTINCT est plus 'propre', mais j'étais pas sur de cette syntaxe pour Oracle.
Marsh Posté le 24-02-2002 à 16:29:51
Voici mes 3ere questions en SQL de newbies.
La seule commande SQL que je connaisse est SELECT * FROM client.
J'ai deux tables dans une base de données Oracle, client (qui contient l'ID, le nom (unique), + d'autres infos) et transaction (qui contient toutes les transactions entre un vendeur et un client ID, nom du client(meme que client.nom), flag + d'autres infos)
1. Je voudrai inserer (ou plutot ajouter) un nouveau champ dans une table existante (client). Le nom du nouveau champ est 'status' et est sur 3 caractères.
A quoi va ressembler ma requete:
INSERT status FROM client ??? (ou je mets le type du champ VARCHAR(3))
2. Je voudrai maintenant faire une selection des clients contenu dans la table transaction (ou faire la listes des clients) mais sans avoir tous les boublons (parce que je peux avoir plusieurs transactions pour le meme clients), il me faut uniquement la liste des clients
SELECT transaction.nom FROM transaction WHERE ??? (quel est le critere pour n'avoir que les noms des clients)
Ex:
DUPOND
RICHARD
DUPOND
DUPOND
RICHARD
TREMBLAY
resultat escompté
DUPOND
RICHARD
TREMBLAY
3. Et pour finir je voudrai affecter (ou appliquer) un status a mon flag (de la table transaction) lorsque le client a un status actif (par exemple 'A' Si le status du client (table client) est de type 'A' je veux mettre toutes les transactions associées a ce client à 'V' (V comme valide)
UPDATE transaction.flag SET 'V' WHERE client.nom=transaction.nom AND client.status='S' (je ne sais pas si la syntaxe est bonne mais ca donne une idee du resultat souhaité)
Si vous pouvez me donner une syntaxe exacte ca serai super cool
Si vous n'avez rien compris, faites le moi savoir
Voila vous avez 1 heure pour y repondre
Merci beaucoup pour les reponses
Question supplementaire
Quel logiciel (client oracle) utilisez vous acceder à Oracle ?
J'utilise presentement PL/SQL, TOAD ne marche pas il reste gelé a son lancement (si quelqu'un a une solution pour ca)