Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen RevisionVorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
mysql [2024/09/23 12:29] – [Auf nicht existierende Klassenlisteneinträge zeigende NB-Nummern suchen/ändern] geraldmysql [2025/03/10 13:21] (aktuell) – [Groß- & Kleinschreibung bei Abfrage einer Tabelle in 'utf8_unicode_ci', die ausgelegt ist] gerald
Zeile 161: Zeile 161:
 </code> </code>
  
-Tausche Vor/Nachnamen in Klassenliste (Karl, Maier statt Maier, Karl)+Tausche Vor/Nachnamen in Klassenliste (Karl, Maier statt Maier, Karl). (Vorname & Nachname sind vertauscht)
  
 <code> <code>
Zeile 295: Zeile 295:
 <code> <code>
 SELECT r.*, r.classlist_id AS CID, p.date_delete, p.jobnumber FROM 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 WHERE r.classlist_id > 0 AND c.id IS NULL AND !(r.reorder_id > 0) AND p.date_delete > DATE(NOW()) ORDER BY r.classlist_id SELECT r.*, r.classlist_id AS CID, p.date_delete, p.jobnumber FROM 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 WHERE r.classlist_id > 0 AND c.id IS NULL AND !(r.reorder_id > 0) AND p.date_delete > DATE(NOW()) ORDER BY r.classlist_id
 +</code>
 +
 +Reparieren (hier für #2905 und Limit 250):
 +
 +<code>
 +
 +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 = '2905' AND r.classlist_id > 0 AND c.id IS NULL AND !(r.reorder_id > 0) AND p.date_delete > DATE(NOW()) LIMIT 250
 +
 </code> </code>
  
Zeile 374: Zeile 382:
 <code> <code>
 SELECT liste.id, liste.jobnumber, liste.class, liste.name, liste.order_number, liste.value_payed, liste.order_number FROM qf_classlist as liste INNER JOIN (SELECT jobnumber, class, name, order_number, value_payed FROM qf_classlist GROUP BY jobnumber, class, name, order_number HAVING COUNT(id) > 1) dup ON (liste.jobnumber = dup.jobnumber && liste.name = dup.name && liste.class = dup.class && liste.order_number = dup.order_number && liste.value_payed = dup.value_payed) WHERE liste.value_payed > 0 AND liste.order_number != '' ORDER by jobnumber, class, name SELECT liste.id, liste.jobnumber, liste.class, liste.name, liste.order_number, liste.value_payed, liste.order_number FROM qf_classlist as liste INNER JOIN (SELECT jobnumber, class, name, order_number, value_payed FROM qf_classlist GROUP BY jobnumber, class, name, order_number HAVING COUNT(id) > 1) dup ON (liste.jobnumber = dup.jobnumber && liste.name = dup.name && liste.class = dup.class && liste.order_number = dup.order_number && liste.value_payed = dup.value_payed) WHERE liste.value_payed > 0 AND liste.order_number != '' ORDER by jobnumber, class, name
 +</code>
 +
 +
 +==== Fotokation: Ein Angebot (oder mehrere) an das Ende des Offerstrings anhängen ====
 +
 +<code>
 +UPDATE `fotoaction_pics` SET offer = CONCAT(offer, ',163') WHERE `valid_to` > '2025-11-20' AND offer NOT LIKE '%,163' LIMIT 25000
 +</code>
 +
 +
 +==== Alle Bestellnummern der Fotoaktion eines Auftrags (z.B. für Excel) ====
 +
 +
 +<code>
 +SELECT class, name, orderinfo_key FROM `qf_classlist` WHERE `jobnumber` = 2871 AND `class` != 'Absent' AND `orderinfo_key` != '' ORDER BY class
 +</code>
 +
 +==== Die Nachbestellnummern eines Auftrages wurden erstellt/reserviert, sollen aber wieder weg ====
 +
 +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:
 +
 +<code>
 +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;
 +</code>
 +
 +Sind sie weg?
 +
 +<code>
 +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
 +</code>
 +
 +Jetzt die Relations löschen: (muss sein! Weil die reorder_id jetzt auf eine nicht-existierende picture_id zeigt!!!)
 +
 +<code>
 +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
 +</code>
 +
 +
 +Sind sie weg?
 +<code>
 +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
 +</code>
 +
 +==== Groß- & Kleinschreibung bei Abfrage einer Tabelle in 'utf8_unicode_ci', die ausgelegt ist ====
 +
 +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:** Sie können das BINARY-Keyword verwenden, um die Spalte in eine binäre Form umzuwandeln, wodurch die Unterscheidung zwischen Groß- und Kleinschreibung erzwungen wird:
 +
 +<code>SELECT * FROM tabelle WHERE BINARY spalte = 'Wert';
 +</code>
 +
 +  - **Binäre Kollation in der Abfrage festlegen:** Eine andere Möglichkeit ist, die Kollation direkt in der Abfrage zu ändern:
 +
 +<code>SELECT * FROM tabelle WHERE spalte COLLATE utf8_bin = 'Wert';</code>
 +
 +  - **Spalte mit einer binären Kollation erstellen:** Wenn die Abfrage häufiger benötigt wird, könnten Sie überlegen, die Spalte dauerhaft mit einer binären Kollation zu speichern:
 +
 +
 +<code>ALTER TABLE tabelle MODIFY spalte VARCHAR(255) COLLATE utf8_bin;</code>
 +
 +==== PHP: Einfach dt. Datum in SQL-Format umwandeln ====
 +
 +
 +PHP:
 +<code>
 +$date_de = '24.03.2025';
 +$date_sql = DateTime::createFromFormat('d.m.Y', $date_de)->format('Y-m-d');
 +echo $date_sql; // Gibt "2025-03-24" aus
 +
 </code> </code>
  
 
Nach oben
mysql.1727094590.txt.gz · Zuletzt geändert: 2024/09/23 12:29 von gerald
chimeric.de = chi`s home Creative Commons License Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0
DFmW2CEce3htPL1uNQuHUVu4Tk6WXigFQp   Dogecoin Donations Accepted Here    DFmW2CEce3htPL1uNQuHUVu4Tk6WXigFQp  DFmW2CEce3htPL1uNQuHUVu4Tk6WXigFQp