2016-04-09 13 views
0

Ich versuche, zwei Spalten mit Joins zu holen, unter Abfrage funktioniert gut, jetzt, wie ich diese beiden Werte mit If-Anweisung vergleichen kann.Wie zwei Spaltenwerte in mysql gespeicherte Prozedur zu vergleichen

SELECT 
    failed = L.failed_attempts AS 'FAILED ATTEMPTS', 
    s_value = s.setting_value as 'SETTING VALUE' 
FROM login_t L 
INNER JOIN settings_t S ON S.SETTING_NAME = 'login_attempts' 
WHERE L.login_id = id 
    AND L.failed_attempts > S.setting_value; 

wenn failed_attempts > settings_value dann aktualisieren, um den is_logged_in Spaltenwert in login_t-0 und return false sonst return true

PS: Ich verwende MySQL gespeicherte Prozedur

+0

Ihre Anfrage mit Einzel arbeitet Aliasnamen –

+0

ja es funktioniert gut –

+0

Und diese Abfrage gibt immer eine Zeile zurück? –

Antwort

0

Wenn Ihre select-Anweisung Allways Retuns genau eine Zeile, Sie können die ausgewählten Werte INTO lokale Variablen speichern, die Sie zuerst DECALRE sollten. Dann können Sie IF .. THEN .. ELSE .. END IF; verwenden: Um etwas zurückzugeben, müssen Sie nur SELECT someValue. Ich bin mir nicht sicher, was genau verglichen werden sollte. Aber dies ist der Weg, können Sie es tun:

DECLARE FAILED_ATTEMPTS INT; 
DECLARE SETTING_VALUE INT; 

SELECT 
    failed = L.failed_attempts, 
    s_value = s.setting_value 
INTO 
    FAILED_ATTEMPTS, 
    SETTING_VALUE 
FROM login_t L 
INNER JOIN settings_t S ON S.SETTING_NAME = 'login_attempts' 
WHERE L.login_id = id 
    AND L.failed_attempts > S.setting_value; 

IF FAILED_ATTEMPTS > SETTING_VALUE 
THEN 
    -- your update statement here 
    SELECT FALSE; 
ELSE 
    SELECT TRUE; 
END IF; 

Vielleicht brauchen Sie

SELECT 
    L.failed_attempts, 
    s.setting_value 
INTO 
    FAILED_ATTEMPTS, 
    SETTING_VALUE 

Aber irgendwie ich denke, man braucht zwei select-Anweisungen:

SELECT L.failed_attempts, 
INTO FAILED_ATTEMPTS 
FROM login_t L 
WHERE L.login_id = id; 

SELECT s.setting_value 
INTO SETTING_VALUE 
FROM settings_t S 
WHERE S.SETTING_NAME = 'login_attempts'; 
+0

Dank, es funktioniert gut –

Verwandte Themen