Hallo,
Hier sind 13 Fragen zu MySQL mit etwas Perl angehaucht:
Danke für etwaige Hilfestellung!
siehe Vinzenz.
Ich gehe mal auf ein paar Fragen ein, zu denen ich was sagen kann und zu denen man im Handbuch wenig Informationen findet.
3) und das Feld
"email" *irgendwo* drinnen die Buchstaben "le" hat.
WHERE INSTR(email,'le') = 0
sollte schneller sein als
WHERE email LIKE '%le%'
http://dev.mysql.com/doc/mysql/de/string-functions.html
4) Mir wurde irgendwann mal gesagt, dass COUNT() in
Verbindung mit LIMIT nicht geht bzw. nicht korrekt ist.
Infos dazu?
LIMIT limitiert das Resultset, nachdem es erstellt wurde. COUNT zählt also die Datensätze _bevor_ LIMIT limitiert.
5) Kann man ein Ergebnis weiter verwenden?
Zuerst aus table1 das Feld "email" von allen Einträge selektieren,
deren "name" mit "a" beginnt,
und dann im "table2" schauen wo die gleichen emails im Feld "kontakt" steht,
und davon die "d_id" ausgeben.
geht das ohne das Zwischenspeichern zu müssen in einer Programmiersprache?
Das könnte ein JOIN sein. Um das zu erkennen müsste man aber die Tabellenstruktur näher kennen.
Wenn, dann müssen tabelle1 und tabelle2 relational verbunden werden können, z.B. über eine email_id, die in beiden Tabellen steht.
http://dev.mysql.com/doc/mysql/en/join.html
- Wie geht das mit ASC und DESC ? Ich finde kein Beispiel wo man das verwendet.
Was ist da unklar?
ORDER BY feldname ASC - sortiert aufsteigend
ORDER BY feldname DESC - sortiert abfallend
- Wie geht es 2 Felder gleichzeitig zu selectieren,
und dann einen speziellen Feldnamen zu verweben den man mit "AS" bestimmt?
Also selectieren irgendwas AS <wunschname_des_feldes>
http://dev.mysql.com/doc/mysql/en/problems-with-alias.html
- Wenn man die Ergebnisse zählen will,
geht COUNT(*) genauso wie COUNT(id)
Wann sollte ich welchem den Vorzug geben?
COUNT(*) zählt über _alle_ Felder in den Datensätze. COUNT(feldname) zählt nur über dieses Feld. Unterschiede gibt es, wenn NULL-Werte in den Felder stehen.
Bsp:
tabelle1
nr name
1 a
2 NULL
3 c
SELECT count(*) from tabelle1
+----------+
| COUNT(*) |
+----------+
| 3 |
+----------+
SELECT count(name) from tabelle1
+-------------+
| COUNT(name) |
+-------------+
| 2 |
+-------------+
viele Grüße
Axel