Aller au contenu

Sujets conseillés

Posté

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

Posté

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 :whistling:

Donc je voudrais pouvoir faire ce genre de chose mais juste en mysql à partir du server sql...

Merci ;)

Posté

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 ?

Posté

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 :whistling:

Je peux pas donner vraiment la structure de ma table c'est confidentiel pour le moment :blush:

Posté (modifié)

J'ai essayé ca :

Insert into table2(champ1,champ2,volume) VALUES(
SELECT  DISTINCT champ1, champ2, count( champ1 )  AS count
FROM 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é par trihanhcie
Posté (modifié)

Encore une erreur :blush:

INSERT  INTO table2( val) 
WHERE  (
SELECT  *
FROM table2 a, table1 b
WHERE a.champ1 = b.champ1 AND a.champ2  = b.champ2   )
VALUES ( 1  )

Si ca se trouve je vais trouver pourquoi mais bon...

Modifié par trihanhcie
Posté (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 :whistling:

Merci

Voila ce que j'ai mis par exemple :

UPDATE table2 a SET value = (  SELECT b.id
FROM table1 b
WHERE b.id =1  )
WHERE a.id =10

Apparement il y a une erreur de syntaxe...

Modifié par trihanhcie
Posté (modifié)

Tu est sous quelle version de MySQL ?

Insert into table2(champ1,champ2,volume) VALUES(
SELECT  DISTINCT champ1, champ2, count( champ1 )  AS count
FROM table1 group by champ1)

INSERT  INTO table2( val)
WHERE  (
SELECT  *
FROM table2 a, table1 b
WHERE 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.id
FROM table1 b
WHERE 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é par nourson
Posté

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 count
FROM table1
GROUP 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.value
FROM table3 c,table1 a
WHERE c.id = a.id )
WHERE b.id = a.id

Merci ^^

Posté

... 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?: :blush:

Posté

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

Posté
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 :)

Posté

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"?

Posté

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 ? :(

Posté

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 ;)

Posté
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

Posté

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.

Posté

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? :blush: Par exemple, comment on dit ds quel repertoire faut installer la 2e version de mysql...

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...