trihanhcie Posté 1 Mars 2006 Posté 1 Mars 2006 Bonjour J'aimerai savoir s'il est possible de récupérer les résultats d'une requete et après de les réutiliser. Mais cela uniquement sur le server SQL. C'est à dire uqe je veux pas utiliser de php ou quoique ce soit. Si j'ai bien compris, on peut exporter les résultats en faisant mysql --user= ... --password=... > result Après comment réutiliser le result dans une autre requete, du meme script sql si possible... J'espère que je me suis bien exprimé :s Merci
trihanhcie Posté 1 Mars 2006 Auteur Posté 1 Mars 2006 Personne? Donc en fait ce serait pour faire l'équivalent d'un $result = mysql_fetch_array("select * from ...");$final = mysql_fetch_array("select * from ... where resultat = $result") Dsl pour le code, je sais qu il est pas bon C'est à titre d'exemple Donc je voudrais pouvoir faire ce genre de chose mais juste en mysql à partir du server sql... Merci
NorSeb Posté 1 Mars 2006 Posté 1 Mars 2006 Bonjour, Ta demande ressemble à une requete imbriquée non ? Genre SELECT * FROM table1, table2 WHERE condition ou encore SELECT * FROM table1 LEFT JOIN table2 ON (condition) Tu peux nous en dire un peu plus sur ta structure et sur ce que tu cherche à obtenir exactement ?
trihanhcie Posté 1 Mars 2006 Auteur Posté 1 Mars 2006 Bah en fait dans ma table1, j'ai 2 champs + la clé primaire Ma 1e requete permet de récupérer les différents entrées distinctes ainsi que le compte de ces entrées... C'est à dire que, par exemple, j'aurai en résultats : 2 entrées pour le couple1(champs1,champ2), 1 entrée pour le couple (champ1,champ2),... Cette requete est ok, je l'ai faite Après, il faut que j'insère ces résultats dans la table2 c'est à dire qu il faut que je fasse un insert into table2 (champs1,champ2, compte,champ4) values = (champs1,champ2, count, champ4) ou champs4 vient d'une autre table encore en fait Je peux pas donner vraiment la structure de ma table c'est confidentiel pour le moment
trihanhcie Posté 1 Mars 2006 Auteur Posté 1 Mars 2006 En effet ca a l'air d'etre possible de faire ca dans une seule requete, j'essaie ca
trihanhcie Posté 1 Mars 2006 Auteur Posté 1 Mars 2006 (modifié) J'ai essayé ca : Insert into table2(champ1,champ2,volume) VALUES(SELECT DISTINCT champ1, champ2, count( champ1 ) AS countFROM table1 group by champ1) Ca marche pas , il y a une erreur de syntaxe... Une idée? :s PS : il ne fallait pas mettre le value apparement, je continue de tester Modifié 1 Mars 2006 par trihanhcie
trihanhcie Posté 1 Mars 2006 Auteur Posté 1 Mars 2006 (modifié) Encore une erreur INSERT INTO table2( val) WHERE ( SELECT * FROM table2 a, table1 bWHERE a.champ1 = b.champ1 AND a.champ2 = b.champ2 )VALUES ( 1 ) Si ca se trouve je vais trouver pourquoi mais bon... Modifié 1 Mars 2006 par trihanhcie
trihanhcie Posté 2 Mars 2006 Auteur Posté 2 Mars 2006 (modifié) Bonjour ! Personne m'a répondu hier ... J'ai la meme question pour update en fait ... J'ai cherché la syntaxe un peu partout sur le net sans y arriver... C'est à dire il faudrait que je puisse mettre à jour un champs dans table1 dont la valeur est égale à un champ dans une table2... J'ai essayé des tas de choses sans y arriver Merci Voila ce que j'ai mis par exemple : UPDATE table2 a SET value = ( SELECT b.idFROM table1 bWHERE b.id =1 ) WHERE a.id =10 Apparement il y a une erreur de syntaxe... Modifié 2 Mars 2006 par trihanhcie
nourson Posté 2 Mars 2006 Posté 2 Mars 2006 (modifié) Tu est sous quelle version de MySQL ? Insert into table2(champ1,champ2,volume) VALUES(SELECT DISTINCT champ1, champ2, count( champ1 ) AS countFROM table1 group by champ1)INSERT INTO table2( val) WHERE ( SELECT * FROM table2 a, table1 bWHERE a.champ1 = b.champ1 AND a.champ2 = b.champ2 )VALUES ( 1 ) La syntaxe correcte est la suivante : INSERT [LOW_PRIORITY | HIGH_PRIORITY] [iGNORE] [iNTO] tbl_name [(col_name,...)] SELECT ... [ ON DUPLICATE KEY UPDATE col_name=expr, ... ] UPDATE table2 a SET value = ( SELECT b.idFROM table1 bWHERE b.id =1 ) WHERE a.id =10 Ta requête SELECT b.id FROM table1 b WHERE b.id =1 va logiquement retourné 1 non ? Si elle retourne plusieurs résultats, il faut utiliser un value IN" au lieu du "value =" Modifié 2 Mars 2006 par nourson
trihanhcie Posté 2 Mars 2006 Auteur Posté 2 Mars 2006 Alors pour le insert c'est bon en fait... Sauf s'il est possible d'insérer des valeurs provenant de différentes tables... La requête que j'ai éxecuté est la suivante INSERT INTO table2( champ1,champ2, champ3)SELECT DISTINCT champ1,champ2, count(champ1 ) AS countFROM table1GROUP BY champ1; Il a fonctionné comme je voulais. Mais il me manque un champs que je n'ai pas rempli dans la table2 qui est le champ valeur. Car ce champs la, je dois aller recherche l'informatino dans une table3. Est ce possible de faire ca avec un seul insert? Dans le cas contraire, j'allais faire l'update dont je parlais : UPDATE table2 b SET value = ( SELECT c.valueFROM table3 c,table1 aWHERE c.id = a.id )WHERE b.id = a.id Merci
trihanhcie Posté 2 Mars 2006 Auteur Posté 2 Mars 2006 ... Je dois être bigleux... CREATE FUNCTION func() RETURNS count AS 'select count(id) from test where id = 1;' rien que ca il me met qu il y a une erreur de syntaxe... Qq voit l'erreur?:
trihanhcie Posté 2 Mars 2006 Auteur Posté 2 Mars 2006 (modifié) Ah oui sion ma version de mysql c'est la 3.23.58 Modifié 2 Mars 2006 par trihanhcie
trihanhcie Posté 2 Mars 2006 Auteur Posté 2 Mars 2006 Encore un exemple plus simple CREATE FUNCTION one() RETURNS integer AS 'SELECT 1 AS RESULT;' LANGUAGE SQL; Erreur de syntaxe....
nourson Posté 2 Mars 2006 Posté 2 Mars 2006 Je ne trouve que cette syntaxe pour créer des fonctions en 3.23.x : CREATE [AGGREGATE] FUNCTION function_name RETURNS {STRING|INTEGER|REAL|DECIMAL} SONAME shared_library_name
Dan Posté 2 Mars 2006 Posté 2 Mars 2006 Ah oui sion ma version de mysql c'est la 3.23.58 Tu n'as pas de possibilité de requêtes imbriquées en version 3.23.58. Normal que mySql te donne une erreur
trihanhcie Posté 2 Mars 2006 Auteur Posté 2 Mars 2006 mm... comment on installe une nouvelle version de mysql server? faut juste dl MySQL-server-5.0.18-0.i386.rpm si on a une fedora et "l'installer"?
trihanhcie Posté 2 Mars 2006 Auteur Posté 2 Mars 2006 Je suis complétement nouveau pour tout ce qui est installation de package sous Linux. Je suis sur un server qui a une Fedora 3 d'installer avec le server mysql version 3.23.58. J'aimerai bien faire une update de mon server pour la mettre à la version 5.0.18 Comment faire? J'ai téléchargé les rpm sur le site de mysql soit le MySQL-5.0.18-0.src.rpm. Une fois connecté sur le server, j'ai "installé" le package avec rpm -i le nom du fichier. Au lancement, j'ai 3 warning : warning: MySQL-5.0.18-0.src.rpm: V3 DSA signature: NOKEY, key ID 5072e1f5 warning: user mysqldev does not exist - using root warning: user mysqldev does not exist - using root qd je regarde dans /usr/src/redhat/SOURCES, je vois le fichier tar.gz. Je dois faire quio apres? ... Le server sql est arrêté et relancé mais la version n'est tjs pas changé Qq a une idée ?
trihanhcie Posté 3 Mars 2006 Auteur Posté 3 Mars 2006 Salut Bon toujours sur mon problème de update pour la requete ... C'est quoi la syntaxe pour faire un update de certaines entrées seulement d'un tableau et dont la valeur est égal au résultat d'un select d'une autre table... C'est possible? En sachant que par exemple, le select reverrait 3 résultats et que les 3 résultats devraient être mis à jour dans la table "comme il faut" lol Merci
trihanhcie Posté 6 Mars 2006 Auteur Posté 6 Mars 2006 Personne? ( Ce serait donc un update d'une colonne dont les données sont dans une autre table...
robinsonvendredi Posté 6 Mars 2006 Posté 6 Mars 2006 Personne? ( Ce serait donc un update d'une colonne dont les données sont dans une autre table... <{POST_SNAPBACK}> Je ne suis pas certain de la syntaxe MySQL mais voila comment je fais sur sql server: Fetching des enregistrements de la table à mettre à jour (lecture des enregistrements les ID uns après les autres = c'est une boucle) select de la nouvelle valeur sur l'autre table avec l'ID courant Update de l'enregistrement courant ID suivant fin du fetching Attention le fetching consomme pas mal de ressource de la base de données C'est plûtot réservé à des traitements ponctuels
trihanhcie Posté 6 Mars 2006 Auteur Posté 6 Mars 2006 mmm ... quelle version de sql pour ca? J'ai la version 3.23.58... Sans update la version du server je pourrai faire quoi en requete sql? :s
Dan Posté 6 Mars 2006 Posté 6 Mars 2006 Si tu veux passer à mysql5.. il faut d'abord passer par les versions 4.0 et 4.1, comme conseillé sur le site de mysql. Je ne me lancerais pas dans une install directe de la 5.0 sans passer par ces étapes.
trihanhcie Posté 6 Mars 2006 Auteur Posté 6 Mars 2006 ok... mais tu pourrais me dire comment on fait pour mettre 2 version de mysql sur un meme server? Ils disent comment il faut configurer une fois mysql installé mais comment on commence? Par exemple, comment on dit ds quel repertoire faut installer la 2e version de mysql...
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant