2010-11-12 7 views
2

Je choisissais d'une table d'attribut avec la requête ci-dessous .. Le problème est que je requiers une chaîne formatée selon une condition ..chaîne MySQL formatage + des instructions conditionnelles

1.) Chaîne formatée en commençant par la chaîne " répondre: »
2.) Suivez la chaîne ci-dessus:
Framed-Route + Framed-IP
ou Framed-IP est la route est pas définie
ou Pool-Conseil

Ci-dessous un exemple de ce dont j'ai besoin ..

Exemple: Réponse: IP Framed = "111.111.111.111"
Example2: Répondre: PoolHint = "8"

peut les états de l'état MySQL être utilisés pour cela?

Modifier la suite

Si (attribut_name == 'Framed-Route') Reply = Framed-Route = "valeur"; elseif (nom_attribut == 'Framed-IP) Répondre = IP Encadré = "valeur" autre réponse = PoolHint = "valeur"

########### Sortie
SELECT attribute_name, value 
    FROM user_product_attribute upa, product_attribute pa 
WHERE upa.user_product_id IN 

    ( SELECT upa.user_product_id 
     FROM user_product_attribute upa, user_product up, product_attribute pa, product p 
     WHERE pa.attribute_name = 'username' 
     AND pa.product_attribute_id = upa.product_attribute_id 
     AND pa.product_id = p.product_id 

     AND up.status = 'active' 
     AND p.product_name = 'product1' 
     AND upa.value = 'joebogs') 

    AND upa.product_attribute_id = pa.product_attribute_id 
########### sortie

valeur nom_attribut
Framed-Route 111.111.111.111
-Framed-IP Adresse 111.111.111.111
PoolHint 8
Nom d'utilisateur Mot de passe joeblogs
passe

Répondre

0

Si je l'ai bien compris la question, vous pouvez utiliser la fonction MySQL CONCAT() pour ce faire:

Ne pas utiliser CONCAT:

mysql> SELECT attribute_name, value 
    -> FROM user_product_attribute 
    -> WHERE attribute_name = 'Framed-IP-Address'\G 

attribute_name: Framed-IP-Address 
value: 111.111.111.111 

requête similaire en utilisant la fonction CONCAT:

mysql> SELECT attribute_name, 
    -> CONCAT('Reply: Framed-IP=',value) AS 'formatted_value' 
    -> FROM user_product_attribute 
    -> WHERE attribute_name = 'Framed-IP-Address'\G 

attribute_name: Framed-IP-Address 
formatted_value: Reply: Framed-IP=111.111.111.111 

CONCAT doc: http://dev.mysql.com/doc/refman/5.1/en/string-functions.html#function_concat

Comme je l'ai dit, je ne sais pas si c'est ce dont tu avais besoin?

Lee - suite à votre commentaire, voici une requête mise à jour. Celui-ci utilise CONCAT et IF:

mysql> SELECT attribute_name, 
    -> IF(attribute_name = 'Framed-Route', CONCAT('Reply=Framed-Route=',value), 
    -> IF(attribute_name = 'Framed-IP', CONCAT('Reply=Framed-IP=',value), value)) 
    -> AS 'formatted_value' 
    -> FROM user_product_attribute\G 

*************************** 1. row *************************** 
attribute_name: Framed-Route 
formatted_value: Reply=Framed-Route=111.111.111.111 

*************************** 2. row *************************** 
attribute_name: Framed-IP 
formatted_value: Reply=Framed-IP=111.111.111.111 

Dans ce qui précède, si le nom_attribut est autre chose que « Framed-Route » ou «Framed-IP la valeur est renvoyée sans aucun formatage.

+0

C'est un début ... En plus cependant j'ai besoin de ce qui suit .. If (attribute_name == 'Framed-Route') Reply = Framed-Route = "valeur"; elseif (nom_attribut == 'Framed-IP') Reply = Framed-IP = "valeur"; – Lee

+0

OK - Je vois ce que tu veux dire. Je vais mettre à jour ma réponse rapidement – Joel

+0

Merci, très apprécié – Lee

Questions connexes