Requete mysql mal formulé

xunil2003 Messages postés 830 Statut Membre -  
xunil2003 Messages postés 830 Statut Membre -
Bonjour,

Dans un script bash je voudrai interroger la basse de données, seulement je ne trouve pas comment formuler la requete ?

code bash (Linux)
nom_table4="modules_x10"    
colonne_recherche4="type"    
recherche4="L"    
select_noms_colonnes4_1="code_maison_unite"    


sql9(){    
mysql -h "$hote_db" -D "$nom_bd" -u "$login_db" -p"$pass_bd" \    
  --default-character-set=$format_texte -B -N -e "SELECT $select_noms_colonnes4_1 FROM $nom_table4 WHERE $colonne_recherche4 LIKE '$recherche4%'"     
        }    

echo $(sql9)


Il m'affiche comme résultat

serveur@debian:~$ e-lall-on    
B1 B2 C1 E1 E9     
serveur@debian:~$


ors il me faut uniquement le résultat avec le "code_maison_unite" E1 E9, il faudrait qu'il m'affiche le résultat comme ceci,
E1 E9


De fàçon a ce qu'il puisse m'afficher
tout ce qu'il trouve qui commence par la lettre "L" dans "type" en m'affichant le résultat de "code_maison_unite" de "E" uniquement, ors il m'affiche toute la basse y compris les autres lettres B1, B2, C1

Bd
+----+-------------------------------------+-------------------+------+
| id | nom_module | code_maison_unite | type |
+----+-------------------------------------+-------------------+------+
| 17 | Lumière du salon | B1 | LD11 |
| 18 | Lumière cheminé | B2 | LM12 |
| 33 | Lumière chambre | C1 | LD11 |
| 65 | Lumière bureau | E1 | LD11 |
| 73 | Lumière salle de sport | E9 | LD11 |
+----+-------------------------------------+-------------------++------+


Je n'arrive pas a formuler la requete ?
Pouvez-vous m'aider ?
Merci.

A voir également:

27 réponses

arth Messages postés 10414 Statut Contributeur 1 293
 
Dans ce cas essayez ainsi :

sql06="SELECT $select_noms_colonnes1_2 FROM $nom_table1 WHERE id LIKE '" $lignes3%"'"

Et rajouter en dessous :

echo "Requete a executer : "$sql06

Voir quelle requête sera exécutée.

Le loup, solitaire et mystérieux.
0
xunil2003 Messages postés 830 Statut Membre 14
 
bonsoir,

J'ai fait ceci :
echo "------ test  6 -----"
sql06="SELECT $select_noms_colonnes1_2 FROM $nom_table1 WHERE id LIKE '" $lignes3%"'" 
Requete a executer = $sql06

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 
echo "resultat test 6 : $lignes6"
done
echo "------ Fin test 6 -----"
echo ""
echo "resultat sql06 : $sql06"


Il me repond :
------ test  6 -----
/home/serveur/Domotique/ordres/e-lall-on: line 254: fg: pas de contrôle de tâche
/home/serveur/Domotique/ordres/e-lall-on: line 255: Requete : commande introuvable
------ Fin test 6 -----


Ligne 254 :

sql06="SELECT $select_noms_colonnes1_2 FROM $nom_table1 WHERE id LIKE '" $lignes3%"'" 


Ligne 255 :

Requete a executer = $sql06


Merci.
0
arth Messages postés 10414 Statut Contributeur 1 293
 
J'ai modifié mon post, effectivement c'était pas bon ;-)

A force de maniper sur plusieurs langages, on se perd :-)
0
xunil2003 Messages postés 830 Statut Membre 14
 
Bonsoir

A force de maniper sur plusieurs langages, on se perd "oui moi aussi"

Avec ceci :

sql06="SELECT $select_noms_colonnes1_2 FROM $nom_table1 WHERE id LIKE '" $lignes3"'"
Requete a executer = $sql06
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

echo "resultat test 6 : $lignes6"
done
echo "------ Fin test 6 -----"
echo ""
echo "resultat requête sql06 : $sql06"

il m'affiche
/home/serveur/Domotique/ordres/e-lall-on: line 255: ' : commande introuvable
/home/serveur/Domotique/ordres/e-lall-on: line 256: Requete : commande introuvable


Ligne 255
sql06="SELECT $select_noms_colonnes1_2 FROM $nom_table1 WHERE id LIKE '" $lignes3"'" 


Ligne 256
Requete a executer = $sql06



Merci.
0
arth Messages postés 10414 Statut Contributeur 1 293
 
Je répète : j'ai modifié mon post précédent ;-)

Il faut mettre :

sql06="SELECT $select_noms_colonnes1_2 FROM $nom_table1 WHERE id LIKE '" $lignes3"'"

echo "Requete a executer : " $sql06
0
xunil2003 Messages postés 830 Statut Membre 14
 
Bonsoir,


J'ai sais que vous avez modifié votre post précédent, mais voila le résultat après modification de votre post précédent.

j'ai mis :
sql06="SELECT $select_noms_colonnes1_2 FROM $nom_table1 WHERE id LIKE '" $lignes3"'"   
echo "Requete a executer : " $sql06


bash répond
/home/serveur/Domotique/ordres/e-lall-on: line 257: ' : commande introuvable   
Requete a executer : 


ligne 257
sql06="SELECT $select_noms_colonnes1_2 FROM $nom_table1 WHERE id LIKE '" $lignes3"'"


Merci.
0
arth Messages postés 10414 Statut Contributeur 1 293
 
Dans ce cas essayez :

sql06="SELECT $select_noms_colonnes1_2 FROM $nom_table1 WHERE id LIKE \'" $lignes3"\'"
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
xunil2003 Messages postés 830 Statut Membre 14
 
bonsoir,

ben alors,
j'ai mis ce que vous m'avez dit

sql06="SELECT $select_noms_colonnes1_2 FROM $nom_table1 WHERE id LIKE \'" $lignes3"\'"
echo "Requete a executer : " $sql06


et bash répond
/home/serveur/Domotique/ordres/e-lall-on: line 257: \' : commande introuvable
Requete a executer : 


La ligne 257 est :
sql06="SELECT $select_noms_colonnes1_2 FROM $nom_table1 WHERE id LIKE \'" $lignes3"\'"

Merci.
0
arth Messages postés 10414 Statut Contributeur 1 293
 
Alors dans ce cas :

sql06="SELECT $select_noms_colonnes1_2 FROM $nom_table1 WHERE id LIKE \'$lignes3%\' "
0
xunil2003 Messages postés 830 Statut Membre 14
 
Bonsoir,

j'ai mis
sql06="SELECT $select_noms_colonnes1_2 FROM $nom_table1 WHERE id LIKE \'$lignes3%\' "
echo "Requete a executer : " $sql06


Rien ne s'affiche

Bash m'affiche
Requete a executer :  SELECT fichier_cm_lumiere_all_On FROM bash WHERE id LIKE \'%\'
ERROR at line 1: Unknown command '\''.


La variable $ligne3 ne s'affiche pas dans le retour de la requête.
Merci.
0
xunil2003 Messages postés 830 Statut Membre 14
 
Bonjour

Avec la requête formulé comme ceci :
sql06="SELECT $select_noms_colonnes1_2 FROM $nom_table1 WHERE id='$lignes3'"


bash m'affiche
/home/serveur/Domotique/ordres/e-lall-on: line 260: Erreur de syntaxe près du symbole inattendu « done »
/home/serveur/Domotique/ordres/e-lall-on: line 260: 'done'

La ligne 260 est
done


code bash
sql06="SELECT $select_noms_colonnes1_2 FROM $nom_table1 WHERE id='$lignes3'" 
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  
done 
echo "" 
echo "Requête sql06 :" $sql06


Merci.
0