Requête mysql dans un fichier bash

Requête mysql dans un fichier bash - Shell/Batch - Programmation

Marsh Posté le 30-08-2012 à 14:06:43    

Bonjour,
 
 
J'ai récupérer l'ids d'une table pour afficher une autre table avec ce code bash avec la variable $lignes3.
Pouvez vous m'aider, peut être que je me trompe ou formule mal la requête, ouje mis prend mal ?
 

Code :
  1. mysql -u $login_db -D $nom_bd -h $hote_db -p$pass_bd  --default-character-set=$format_texte  -e "connect $nom_bd;  SELECT $select_noms_colonnes5_2 FROM $nom_table5 WHERE $colonne_recherche5_1 LIKE '$recherche5_1%' AND $colonne_recherche5_2 LIKE '$recherche5_2%'" | sed '1d' | while read lignes3; do 
  2. $lignes3"
  3. done


 
Résultat

Code :
  1. 65
  2. 73


 
mais quand je fait ceci c'est toute la table qui s'affiche sur des kilomètres

Code :
  1. sql06="SELECT $select_noms_colonnes1_2 FROM $nom_table1 WHERE id LIKE '$lignes3%'"
  2. mysql -u $login_db -D $nom_bd -h $hote_db -p$pass_bd  --default-character-set=$format_texte  -e "$sql06" | sed '1d' | while read lignes6; do 
  3. echo "resultat test 6 :" $lignes6
  4. done


 
Il m'affiche la table sur des kilomètres

Code :
  1. resultat test 6 : 
  2. resultat test 6 : 
  3. resultat test 6 : 
  4. resultat test 6 : 
  5. resultat test 6 : 
  6. resultat test 6 : 
  7. resultat test 6 : 
  8. resultat test 6 : 
  9. resultat test 6 : e1-lall-on
  10. resultat test 6 : 
  11. resultat test 6 : 
  12. resultat test 6 : 
  13. resultat test 6 : 
  14. resultat test 6 : 
  15. resultat test 6 : 
  16. resultat test 6 : 
  17. resultat test 6 : e2-lall-on
  18. resultat test 6 : 
  19. resultat test 6 : 
  20. resultat test 6 : 
  21. resultat test 6 : 
  22. resultat test 6 : 
  23. resultat test 6 : 
  24. resultat test 6 : 
  25. resultat test 6 : 
  26. resultat test 6 : 
  27. resultat test 6 : 
  28. resultat test 6 :


 
au lieu de m'afficher :

Code :
  1. resultat test 6 : e1-lall-on
  2. resultat test 6 : e2-lall-on


 
 
Ma requête tel que je l'ai formulé

Code :
  1. resultat sql06 : SELECT fichier_cm_lumiere_all_On FROM bash WHERE id LIKE '%'


 
Le " LIKE '%' " a la fin de la requête n'affiche pas la variable '$lignes3%'" de la requête sql06
 
j'ai aussi essayé
 
 
 

Code :
  1. sql06="SELECT $select_noms_colonnes1_2 FROM $nom_table1 WHERE id='$lignes3'

"
 
bash m'affiche

Code :
  1. /home/serveur/Domotique/ordres/e-lall-on: line 260: Erreur de syntaxe près du symbole inattendu « done »
  2. /home/serveur/Domotique/ordres/e-lall-on: line 260: `done'


 
 
Vérification de la requête

Code :
  1. resultat sql06 : SELECT fichier_cm_lumiere_all_On FROM bash WHERE id=''


 
Idem pour :

Code :
  1. sql06="SELECT $select_noms_colonnes1_2 FROM $nom_table1 WHERE id LIKE '" $lignes3"'"


 

Code :
  1. sql06="SELECT $select_noms_colonnes1_2 FROM $nom_table1 WHERE id LIKE \'" $lignes3"\'"


 

Code :
  1. sql06="SELECT $select_noms_colonnes1_2 FROM $nom_table1 WHERE id LIKE \'$lignes3%\' "


 
Comment faire ?
aidez moi svp ?
 
Merci.

Reply

Marsh Posté le 30-08-2012 à 14:06:43   

Reply

Marsh Posté le 31-08-2012 à 20:26:34    

Tu peux utiliser "distinct" dans ton select pour éviter que ta requête ne t'affiche 15 fois la même occurence (visiblement un champ vide dans ton cas).
 
Exemple : select distinct  $select_noms_colonnes1_2 FROM $nom_table1 WHERE id LIKE '$lignes3%'
 
Tu peux aussi remplacer ton sed par un grep -v ^$ pour filtrer les lignes vides à passer dans ta variable.


Message édité par Neji Hyuga le 31-08-2012 à 20:27:00
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed