Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen RevisionVorhergehende ÜberarbeitungNächste Überarbeitung | Vorhergehende Überarbeitung | ||
mysql [2021/12/15 16:04] – [Zeichensatz einer Colum einer Tabelle in UTF-8 ändern] gerald | mysql [2025/03/10 13:21] (aktuell) – [Groß- & Kleinschreibung bei Abfrage einer Tabelle in 'utf8_unicode_ci', die ausgelegt ist] gerald | ||
---|---|---|---|
Zeile 161: | Zeile 161: | ||
</ | </ | ||
- | Tausche Vor/ | + | Tausche Vor/ |
< | < | ||
Zeile 266: | Zeile 266: | ||
</ | </ | ||
- | ==== 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 285: | ||
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 343: | Zeile 362: | ||
</ | </ | ||
- | ==== Klassenliste nach Bild-ID ordnen | + | ==== Fortlaufende Nummern im Barcodes-Feld vergeben |
Das Barcode-Feld soll fortlaufende Nummern bekommen, beginnend mit 1000: | Das Barcode-Feld soll fortlaufende Nummern bekommen, beginnend mit 1000: | ||
< | < | ||
- | SELECT @i:=1000; UPDATE `qf_classlist` SET code = @i:=@i+1 WHERE `jobnumber` = 1234 LIMIT 500 | + | SELECT @i:=1000; UPDATE `qf_classlist` SET code = @i:=@i+1 WHERE `jobnumber` = 1234 AND (code IS NULL OR code = '' |
</ | </ | ||
Zeile 363: | Zeile 382: | ||
< | < | ||
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 " | ||
+ | |||
</ | </ | ||