2017-07-20 9 views
1

EDITAktualisieren Sie schließt sich mit

ich diese Abfrage versucht, aber einen Fehler bekam:

UPDATE consultation_med 
SET consultation_med.given_quantity = 0 
FROM 
consultation_med 
left join consultation on consultation.consultation_id = consultation_med.consultation_id 
left join visit on visit.visit_id = consultation.visit_id 
WHERE visit.visit_id='191' 
      AND consultation_med.given_quantity = '361' 

der Fehler:

Error Code: 1064. You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'FROM consultation_med left join consultation on consultation.consultation_id = c' at line 3

EDIT END

Ich brauche um eine Tabelle mit dem Namen consultation_med zu aktualisieren und die given_quantity eines Medikaments in 0 zu ändern, wenn der Status eines Besuchs visit_status von Active zu Inactive geändert wird.

Bitte beachten Sie, dass in der Besuchstabelle jede visit_id mehrere consultation_id in der nächsten Tabelle haben kann, die consultation ist. Und in jedem consultation_id Ärzte können mehrere Medikamente mit unterschiedlichen Mengen geben, so dass wir jetzt für jede consultation_id mehrere Zeilen in consultation_med Tabelle haben.

Hier sind die Tabellen:

enter image description here

wir also den visit_id=173 nehmen, die bereits 4 consultation_id hatte und in jeder Beratung Ärzte 1 Medikamente verschrieben. So haben wir 4 Zeilen zu besuchen, wo visit_id=173 in consultation_med Tabelle. Die Dateneingabe hatte einen Fehler und er muss eine Anfrage an den Administrator senden, indem er den Status dieses Besuchs in Inactive ändert, so dass jede gegebene Medikamentenmenge wieder in den ursprünglichen Speicher zurückkehrt, daher sollten wir die given_quantity von jeder 4 Reihe zu 0 ändern .

Ich habe versucht, in PHP die folgende Abfrage, aber anscheinend ist es nimmt nur eine Zeile und ohne Aktualisierung:

$med_pharmacy_id = $res['med_pharmacy_id']; 
$consultation_med_id = $res['consultation_med_id']; 

$update = "UPDATE consultation_med 
SET given_quantity = 0 
WHERE med_pharmacy_id = :mid 
AND clinic_id = :cid 
AND consultation_med_id = :cmid"; 

Dann versuchte ich links innen Update-Abfrage JOIN zu verwenden:

UPDATE consultation_med 
left join consultation on consultation.consultation_id = consultation_med.consultation_id 
left join visit on visit.visit_id = consultation.visit_id 

SET consultation_med.given_quantity = 0 
WHERE visit.visit_id='173' 
AND consultation_med.given_quantity = '361' 

Die Abfrage ist immer noch falsch und zusätzlich ein Fehler, der ist:

Error Code: 1175. You are using safe update mode and you tried to update a table without a WHERE that uses a KEY column To disable safe mode, toggle the option in Preferences -> SQL Editor and reconnect.

Antwort

1

Dieser Fehler "1175" müssen Sie in e ändern dit oder setting -> Einstellungen in Ihrem SQL-Editor, um SAFE MODE zu deaktivieren, oder Sie sollten phpmyadmin verwenden.

+0

ich brauche behalte es, so später Benutzer Laptop kann normal gemacht werden, so muss ich die Abfrage ändern – droidnation

+0

hmmm, sollten Sie auch versuchen, Unterabfrage, das ist gut für Updates, aber etwas schwieriger –

+0

Ich möchte über Unterabfrage – droidnation

1

In MySQL, sollten Sie die Update-Anweisung schreiben, wie: update-join-set-wo

Etwas wie folgt aus:

UPDATE consultation_med 
LEFT JOIN consultation on consultation.consultation_id = consultation_med.consultation_id 
LEFT JOIN visit on visit.visit_id = consultation.visit_id 
SET consultation_med.given_quantity = 0 
WHERE visit.visit_id='191' 
      AND consultation_med.given_quantity = '361' 

Für weitere Informationen, besuchen this Link

Verwandte Themen