CronJob-Service
bei SELFPHP mit ...
|
+ minütlichen Aufrufen
+ eigenem Crontab Eintrag
+ unbegrenzten CronJobs
+ Statistiken
+ Beispielaufrufen
+ Control-Bereich
Führen Sie mit den CronJobs von
SELFPHP zeitgesteuert Programme
auf Ihrem Server
aus. Weitere Infos
|
:: Anbieterverzeichnis ::
Globale Branchen
Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP
:: Newsletter ::
Abonnieren Sie hier den kostenlosen
SELFPHP Newsletter!
|
MySQLi/PDO/(MySQL) Anfänger, Fortgeschrittene oder Experten können hier Fragen und Probleme rund um MySQLi/PDO/(MySQL) diskutieren |
15.01.2015, 16:54:16
|
Anfänger
|
|
Registriert seit: Jan 2015
Alter: 41
Beiträge: 19
|
|
Zählen von ";" in einer Zelle
Hey zusammen,
ich bin ziemlich neu und noch nicht sehr mit Mysql vertraut.
Ich habe eine Datenbank mit zwei Spalten: "Titel" und "Autoren"
Titel Autoren
"Lach und Sachgeschichten" "Schultz, B.; Meiner, A.; Berner, G."
Nun würde ich gern die Anzahl der Autoren zählen, also eigentlich die Anzahl der ";" plus 1.
Geht das irgendwie?
LG
kid
|
15.01.2015, 17:08:24
|
SELFPHP Experte
|
|
Registriert seit: Jun 2008
Alter: 15
Beiträge: 2.269
|
|
AW: Zählen von ";" in einer Zelle
Unglückliche DB Struktur!
Tipp:
"Die 5 Normalformen" ausdrucken und unters Kopfkissen legen.
Tipp2:
Autoren und Bücher stehen in einer n:m Relation
|
15.01.2015, 18:50:55
|
Junior Member
|
|
Registriert seit: Apr 2014
Alter: 57
Beiträge: 186
|
|
AW: Zählen von ";" in einer Zelle
Zitat:
Zitat von kidchino
Geht das irgendwie?
LG
kid
|
Ja.
Code:
test=*# select length('Schultz, B.; Meiner, A.; Berner, G.') - length(regexp_replace('Schultz, B.; Meiner, A.; Berner, G.',';','','g')) + 1 as "Kinder, macht das nicht zu Hause";
Kinder, macht das nicht zu Hause
----------------------------------
3
(1 row)
Warum die Spalte so heißt wurde Dir in der anderen Mausgeschichte ja schon erklärt.
|
16.01.2015, 14:03:48
|
Anfänger
|
|
Registriert seit: Jan 2015
Alter: 41
Beiträge: 19
|
|
AW: Zählen von ";" in einer Zelle
Hi,
@pguser:
Das ist ja eine sehr charmante lösung :) Die gefällt mir. Ich hab sie dann noch ein bisschen für MySQL angepasst:
SELECT *, length(author) - length(replace(author, ';',''))+1 AS NumbersAuthor FROM Table
@DokuLeseHemmung:
Manchmal kann man sich nicht aussuchen, was für eine Datenbank man bekommt und wie gut oder schlecht sie.
Es gibt sogar eine Buch ID und ich würde natürlich gerne eine neue Tabelle erstellen, wo steht:
BuchID1 Schultz
BuchID1 Meiner
BuchID1 Berner.
Aber ich weiß nicht wie.
Ich finde immer viel über "concat", also wie ich bspw. Titel, Vorname und Nachname zusammen schreiben kann, aber anders herum finde ich nichts.
VG
kid
|
16.01.2015, 14:08:49
|
Junior Member
|
|
Registriert seit: Apr 2014
Alter: 57
Beiträge: 186
|
|
AW: Zählen von ";" in einer Zelle
Zitat:
Zitat von kidchino
Ich finde immer viel über "concat", also wie ich bspw. Titel, Vorname und Nachname zusammen schreiben kann, aber anders herum finde ich nichts.
VG
kid
|
Verständlich. Klar denkende Menschen machen das nicht.
|
16.01.2015, 14:12:55
|
Anfänger
|
|
Registriert seit: Jan 2015
Alter: 41
Beiträge: 19
|
|
AW: Zählen von ";" in einer Zelle
@pguser:
würdest Du diesen Inhalt
"Schultz, B.; Meiner, A.; Berner, G."
nicht trennen?
Mein Ziel wäre ja schon:
BuchID1 Schultz
BuchID1 Meiner
BuchID1 Berner
BuchID2 Müller.
VG
|
16.01.2015, 14:24:20
|
Anfänger
|
|
Registriert seit: Jan 2015
Alter: 41
Beiträge: 19
|
|
AW: Zählen von ";" in einer Zelle
Ich prbiere gerade mal hiermit ein wenig rum,
SELECT *, SUBSTRING_INDEX(author,';',1) AS Author1,
SUBSTRING_INDEX(SUBSTRING_INDEX(author,';',2),';',-1) AS Author2,
SUBSTRING_INDEX(SUBSTRING_INDEX(author,';',3),';',-1) AS Author3,
SUBSTRING_INDEX(SUBSTRING_INDEX(author,';',4),';',-1) AS Author4,
SUBSTRING_INDEX(SUBSTRING_INDEX(author,';',5),';',-1) AS Author5,
SUBSTRING_INDEX(SUBSTRING_INDEX(author,';',6),';',-1) AS Author6,
SUBSTRING_INDEX(SUBSTRING_INDEX(author,';',7),';',-1) AS Author7,
SUBSTRING_INDEX(SUBSTRING_INDEX(author,';',8),';',-1) AS Author8,
SUBSTRING_INDEX(SUBSTRING_INDEX(author,';',9),';',-1) AS Author9
FROM uic.author_count;
Aber das macht ja bei max. 1300 Buchautoren auch irgendwie keinen Sinn, zumal bei einem Buch mit nur einem Autor ja trotzdem 9 mal der gleiche Autor in allen 9 Spalten steht
|
16.01.2015, 14:59:07
|
|
Anfänger
|
|
Registriert seit: Dec 2014
Alter: 35
Beiträge: 20
|
|
AW: Zählen von ";" in einer Zelle
Hallo Kidchino,
echt eine Misere mit der Datenbankstruktur die du da hast...
was hällst du von folgendem Vorschlag:
Code:
SELECT *, substring_index(substring_index(author,';',1),';',-1) AS SubString1,
substring_index(substring_index(author,';',2),';',-1) AS SubString2,
substring_index(substring_index(author,';',3),';',-1) AS SubString3
FROM kidchino
where substring_index(substring_index(author,';',2),';',-1) != substring_index(substring_index(author,';',3),';',-1)
Wenn du bist zu 9 Autoren pro Buch hast... solltest du warscheinlich bei 9 Autoren anfangen und abfragen bei welchen Datenzeilen Autor 8 und 9 nicht übereinstimmt und speicherst die resultate in eine neue Tabelle (mit BücherID).
Wenn das geklappt hat leerst du alle Datensätze auf die das erfolgreich angewendet werden konnte (nur die Authoren ersetzen durch "") und stellst die selbe Anfrage mit 8 Autoren.
also welche Bücher gibt es wo der 7.te Autor != 8.te Autor und so weiter bis du alle durch hast.
(Die spalte autoren ist ja im nachhinein überflüssig da du ne neue Tabelle mit BücherID und Autor hast)
edit: ergebnis ist eine tabelle die in etwa so aussieht:
ID - Buchid - Autor1 - Autor2 - Autor3 - Autor4 - Autor5 - Autor6 - Autor7 - Autor8 - Autor9
Diese Tabelle kann man ja später in eine 3 spaltige Tabelle verschieben und alles wirkt super. :-)
Klingt kompliziert... ist es warscheinlich auch...
vielleicht konnt ich dir damit trozdem helfen.
Lg BozzaCoon
Geändert von BozzaCoon (16.01.2015 um 15:14:09 Uhr)
|
16.01.2015, 15:57:44
|
Anfänger
|
|
Registriert seit: Jan 2015
Alter: 41
Beiträge: 19
|
|
AW: Zählen von ";" in einer Zelle
Hey BozzaCoon,
danke für die Hilfe!!!
Ich habe jetzt (mit Excels Hilfe ;) ) diese Zeilen erstellt.
SELECT *, substring_index(substring_index(author,';',1),';',-1) AS SubString1,
substring_index(substring_index(author,';',2),';',-1) AS SubString2,
substring_index(substring_index(author,';',3),';',-1) AS SubString3
...
substring_index(substring_index(author,';',1268),';',-1) AS SubString1268
FROM author_count
Aber jetzt habe ich bei Buch1 (das hat nur einen Autor:Autor1) natürlich 1268 Spalten mit jeweils Schultz.
jetzt weiß ich nicht mehr weiter :(
|
16.01.2015, 16:00:18
|
Junior Member
|
|
Registriert seit: Apr 2014
Alter: 57
Beiträge: 186
|
|
AW: Zählen von ";" in einer Zelle
Zitat:
Zitat von kidchino
jetzt weiß ich nicht mehr weiter :(
|
Geh zurück auf #2.
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
Forumregeln
|
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.
HTML-Code ist aus.
|
|
|
Alle Zeitangaben in WEZ +2. Es ist jetzt 22:15:21 Uhr.
|