2009-08-15 5 views
2

j'ai deux requêtes première:l'intérieur du boîtier (MySQL)

SELECT 
    players.username AS username, 
    tmp_player_operations.id AS tmp_id, 
    tmp_player_operations.operation_type AS operation_type, 
    tmp_player_operations.veryfication_code AS veryfication_code, 
    tmp_player_operations.expiration_date AS expiration_date, 
    tmp_player_operations.used AS used 
FROM 
    players LEFT OUTER JOIN tmp_player_operations 
    ON players.id = tmp_player_operations.player_id 
WHERE 
tmp_player_operations.veryfication_code = '3c3c4375086fbcbc1cef938a0bfabbb9' 

seconde:

UPDATE 
    players LEFT JOIN tmp_player_operations 
    ON players.id = tmp_player_operations.player_id 
SET 
    tmp_player_operations.used = 1, 
    players.active = 1 
WHERE 
    tmp_player_operations.id = 8 

Maintenant, je voudrais faire cette mise à jour à l'intérieur de sélection, je veux dire quelque chose comme:

(CASE 
    WHEN 
     tmp_player_operations.used = 0 
     THEN 
      UPDATE.... 
      AND 'updated' 
    ELSE 
     'not updated' 
END) AS something 

est quelque chose comme cela possible?

Répondre

1

Non, ce n'est pas possible. Une requête peut être un SELECT ou un UPDATE, mais pas les deux.

Vous pourriez, je suppose, utiliser une procédure stockée pour faire un appel de base de données pour faire la mise à jour et la sélection, mais ce serait encore vraiment deux requêtes (mais cette application n'en verrait qu'une, l'appel proc stocké). Chapter 18 of the MySQL manual contient des détails sur les procédures stockées.

Peut-être devriez-vous reculer un peu et nous demander comment accomplir votre objectif réel?

+0

Je vais le faire avec proc stocké, je voulais seulement savoir si c'est possible, alors votre réponse m'a aidé. Je voulais juste faire une connexion mysql au lieu de deux. – Cfaniak

+1

Vous pouvez émettre plusieurs requêtes par connexion, ne savez pas pourquoi vous auriez besoin de deux connexions. – derobert

0

Mettez à jour un champ supplémentaire avec une valeur 1. Ensuite, exécutez une autre requête et sélectionnez "Updated" où ce champ est égal à un.

Questions connexes