Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
| Beide Seiten der vorigen RevisionVorhergehende ÜberarbeitungNächste Überarbeitung | Vorhergehende Überarbeitung | ||
| mysql [2024/02/29 13:36] – Externe Bearbeitung 127.0.0.1 | mysql [2025/06/27 11:35] (aktuell) – [FA-Test-Bestellung löschen] gerald | ||
|---|---|---|---|
| Zeile 12: | Zeile 12: | ||
| [[http:// | [[http:// | ||
| + | |||
| + | {{:: | ||
| ===== Interne Variable zum Sortieren von Listen ===== | ===== Interne Variable zum Sortieren von Listen ===== | ||
| Zeile 161: | Zeile 163: | ||
| </ | </ | ||
| - | Tausche Vor/ | + | Tausche Vor/ |
| < | < | ||
| Zeile 266: | Zeile 268: | ||
| </ | </ | ||
| - | ==== Auf nicht existierende Klassenlisteneinträge zeigende NB-Nummern suchen/ | + | ==== Auf nicht existierende Klassenlisteneinträge zeigende NB-Nummern suchen/ |
| - | ==== | + | |
| Wenn die Klassenliste gelöscht wurde, aber schon Nachbestellnummern erzeugt wurden, kann es sein, dass NAchbestelleinträge ins Nichts führen. | Wenn die Klassenliste gelöscht wurde, aber schon Nachbestellnummern erzeugt wurden, kann es sein, dass NAchbestelleinträge ins Nichts führen. | ||
| Zeile 286: | Zeile 287: | ||
| UPDATE qf_picture_relation as pr JOIN qf_reorder as r ON r.id = pr.reorder_id LEFT JOIN qf_classlist as c ON pr.classlist_id = c.id SET classlist_id = (classlist_id + X) WHERE pr.picture_id = 0 AND pr.classlist_id >0 AND c.id IS NULL AND pr.classlist_id >= 450764 AND pr.classlist_id <= 450833 LIMIT 71 | UPDATE qf_picture_relation as pr JOIN qf_reorder as r ON r.id = pr.reorder_id LEFT JOIN qf_classlist as c ON pr.classlist_id = c.id SET classlist_id = (classlist_id + X) WHERE pr.picture_id = 0 AND pr.classlist_id >0 AND c.id IS NULL AND pr.classlist_id >= 450764 AND pr.classlist_id <= 450833 LIMIT 71 | ||
| </ | </ | ||
| + | |||
| + | |||
| + | ==== Problem: Klassenliste wurde gelöscht, aber es waren DOCH schon Bilder an diese Klassenlisten gekoppelt ==== | ||
| + | |||
| + | Das heißt, die Bilder werden als nicht zugewiesen in Kuskus angezeigt, sind aber schon auf (nicht mehr existierende) Klassenlisten zugweisen. | ||
| + | |||
| + | Diese erst mal suchen: | ||
| + | |||
| + | < | ||
| + | SELECT r.*, r.classlist_id AS CID, p.date_delete, | ||
| + | </ | ||
| + | |||
| + | Reparieren (hier für #2905 und Limit 250): | ||
| + | |||
| + | < | ||
| + | |||
| + | UPDATE qf_picture_relation AS r JOIN qf_pictures as p ON r.picture_id = p.id LEFT JOIN qf_classlist as c ON r.classlist_id = c.id SET r.classlist_id = 0 WHERE p.jobnumber = ' | ||
| + | |||
| + | </ | ||
| + | |||
| ==== 1 Feld: alles klein schreiben, nur 1. Buchstabe groß ==== | ==== 1 Feld: alles klein schreiben, nur 1. Buchstabe groß ==== | ||
| Zeile 364: | Zeile 385: | ||
| SELECT liste.id, liste.jobnumber, | SELECT liste.id, liste.jobnumber, | ||
| </ | </ | ||
| + | |||
| + | |||
| + | ==== Fotokation: Ein Angebot (oder mehrere) an das Ende des Offerstrings anhängen ==== | ||
| + | |||
| + | < | ||
| + | UPDATE `fotoaction_pics` SET offer = CONCAT(offer, | ||
| + | </ | ||
| + | |||
| + | |||
| + | ==== Alle Bestellnummern der Fotoaktion eines Auftrags (z.B. für Excel) ==== | ||
| + | |||
| + | |||
| + | < | ||
| + | SELECT class, name, orderinfo_key FROM `qf_classlist` WHERE `jobnumber` = 2871 AND `class` != ' | ||
| + | </ | ||
| + | |||
| + | ==== Die Nachbestellnummern eines Auftrages wurden erstellt/ | ||
| + | |||
| + | Die Klassenlisten sind drinnen, die Bilder sind noch nicht gemacht. Die NB-Nummern wurden reserviert, die Barcodes sind gedruckt. Fotograf hat keine Lust mehr und ein anderer Fotograf macht den Auftrag. Die alten NB-Nummern müssen weg als Datenschutzgründen und man muss die Reserviertung neu nachen. | ||
| + | |||
| + | Erst mal alle Nachbestellnummern des Auftrags löschen: | ||
| + | |||
| + | < | ||
| + | DELETE r | ||
| + | FROM qf_reorder AS r | ||
| + | JOIN qf_picture_relation AS rel ON (rel.reorder_id = r.id) | ||
| + | JOIN qf_classlist AS c ON (rel.classlist_id = c.id) | ||
| + | WHERE c.jobnumber = 2911; | ||
| + | </ | ||
| + | |||
| + | Sind sie weg? | ||
| + | |||
| + | < | ||
| + | SELECt r.* FROM qf_reorder AS r JOIN qf_picture_relation AS rel ON (rel.reorder_id = r.id) JOIN qf_classlist AS c ON (rel.classlist_id = c.id) WHERE rel.picture_id = 0 AND c.jobnumber = 2911 | ||
| + | </ | ||
| + | |||
| + | Jetzt die Relations löschen: (muss sein! Weil die reorder_id jetzt auf eine nicht-existierende picture_id zeigt!!!) | ||
| + | |||
| + | < | ||
| + | DELETE rel | ||
| + | FROM qf_picture_relation AS rel JOIN qf_classlist AS c ON (rel.classlist_id = c.id) | ||
| + | WHERE rel.picture_id = 0 AND c.jobnumber = 2911 | ||
| + | </ | ||
| + | |||
| + | |||
| + | Sind sie weg? | ||
| + | < | ||
| + | SELECT rel.* | ||
| + | FROM qf_picture_relation AS rel JOIN qf_classlist AS c ON (rel.classlist_id = c.id) | ||
| + | WHERE rel.picture_id = 0 AND c.jobnumber = 2911 | ||
| + | </ | ||
| + | |||
| + | ==== Groß- & Kleinschreibung bei Abfrage einer Tabelle in ' | ||
| + | |||
| + | Das ci hinten bedeutet 'case insensitiv' | ||
| + | |||
| + | |||
| + | Ich habe eine Tabelle in einer Datenbank mit der Kollation utf8_unicode_ci. Jetzt möchte ich eine Abfrage machen, die auf Groß- und Kleinschreibung achtet. Wie mache ich das? | ||
| + | |||
| + | Lösungsmöglichkeiten: | ||
| + | |||
| + | - **BINARY-Keyword verwenden: | ||
| + | |||
| + | < | ||
| + | </ | ||
| + | |||
| + | - **Binäre Kollation in der Abfrage festlegen: | ||
| + | |||
| + | < | ||
| + | |||
| + | - **Spalte mit einer binären Kollation erstellen: | ||
| + | |||
| + | |||
| + | < | ||
| + | |||
| + | ==== PHP: Einfach dt. Datum in SQL-Format umwandeln ==== | ||
| + | |||
| + | |||
| + | PHP: | ||
| + | < | ||
| + | $date_de = ' | ||
| + | $date_sql = DateTime:: | ||
| + | echo $date_sql; // Gibt " | ||
| + | |||
| + | </ | ||
| + | |||
| + | ==== FA-Test-Bestellung löschen ==== | ||
| + | |||
| + | Um neues Shopsystem zu testen, habe ich in ' | ||
| + | |||
| + | Testen: | ||
| + | |||
| + | < | ||
| + | -- Betroffene vault_order_items | ||
| + | SELECT * FROM vault_order_items WHERE dir LIKE ' | ||
| + | |||
| + | -- Betroffene vault_order | ||
| + | SELECT * FROM vault_order | ||
| + | WHERE id IN ( | ||
| + | SELECT order_id FROM vault_order_items WHERE dir LIKE ' | ||
| + | ) | ||
| + | AND id NOT IN ( | ||
| + | SELECT order_id FROM vault_order_items WHERE dir NOT LIKE ' | ||
| + | ); | ||
| + | |||
| + | </ | ||
| + | |||
| + | Echtes Löschen: (ACHTUNG! Löscht auch Bestellungen, | ||
| + | |||
| + | < | ||
| + | START TRANSACTION; | ||
| + | |||
| + | -- 1. Lösche alle vault_order, | ||
| + | DELETE FROM vault_order | ||
| + | WHERE id IN ( | ||
| + | SELECT order_id | ||
| + | FROM vault_order_items | ||
| + | GROUP BY order_id | ||
| + | HAVING SUM(CASE WHEN dir NOT LIKE ' | ||
| + | ); | ||
| + | |||
| + | -- 2. Lösche alle vault_order_items mit dir LIKE ' | ||
| + | DELETE FROM vault_order_items | ||
| + | WHERE dir LIKE ' | ||
| + | |||
| + | COMMIT; | ||
| + | |||
| + | </ | ||
| + | |||
| + | |||