SELFPHP: Version 5.8.2 Befehlsreferenz - Tutorial – Kochbuch – Forum für PHP Einsteiger und professionelle Entwickler

SELFPHP


Professional CronJob-Service

Suche



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



:: Buchempfehlung ::

TYPO3 Kochbuch

TYPO3 Kochbuch zur Buchempfehlung
 

:: Anbieterverzeichnis ::

Globale Branchen

Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP  

 

:: Newsletter ::

Abonnieren Sie hier den kostenlosen SELFPHP Newsletter!

Vorname: 
Name:
E-Mail:
 
 

Zurück   PHP Forum > SELFPHP > MySQLi/PDO/(MySQL)

MySQLi/PDO/(MySQL) Anfänger, Fortgeschrittene oder Experten können hier Fragen und Probleme rund um MySQLi/PDO/(MySQL) diskutieren

Antwort
 
Themen-Optionen Ansicht
  #11  
Alt 16.01.2015, 16:03:49
kidchino kidchino ist offline
Anfänger
 
Registriert seit: Jan 2015
Alter: 41
Beiträge: 19
AW: Zählen von ";" in einer Zelle

Zitat:
Zitat von pguser Beitrag anzeigen
Geh zurück auf #2.
Direkt oder über Los?

Das hatte ich ja leider nicht wirklich verstanden...
edit:
@Unglückliche DB Struktur!
Kann ich ja leider nicht ändern.

@Tipp:
@"Die 5 Normalformen" ausdrucken und unters Kopfkissen legen.
Sagt mir, dass es falsch ist und ich hätte es so machen sollen: http://de.wikipedia.org/wiki/Normali...28Datenbank%29


@Tipp2:
@Autoren und Bücher stehen in einer n:m Relation
Macht auch Sinn, aber ich weiß gar nicht wie ich von meinem Problem zu der nXm Lösung kommen kann
Mit Zitat antworten
  #12  
Alt 16.01.2015, 16:41:01
DokuLeseHemmung DokuLeseHemmung ist offline
SELFPHP Experte
 
Registriert seit: Jun 2008
Alter: 15
Beiträge: 2.269
AW: Zählen von ";" in einer Zelle

Tabelle "Bücher" -> id, Titel ....
Tabelle "Autoren" -> id, Name ....
Tabelle "Bücher_Autoren" Kreuztabelle -> id, BücherID, AutorID

So kannst du bequem jedem Autor beliebig viele Bücher zuordnen, Jedem Buch beliebig viele Autoren.
Und alles zählen.
Mit Zitat antworten
  #13  
Alt 16.01.2015, 16:53:50
kidchino kidchino ist offline
Anfänger
 
Registriert seit: Jan 2015
Alter: 41
Beiträge: 19
AW: Zählen von ";" in einer Zelle

@DokuLeseHemmung:

Danke,
genauso hättest ich es auch gemacht, wenn ich die Tabelle erstellt hätte.

Wie kann ich dann aber aus 'Schultz, B.; Meiner, A.; Berner, G.'

AutorID1
AutorID2
AutorID3

machen.
Mit Zitat antworten
  #14  
Alt 16.01.2015, 17:03:30
DokuLeseHemmung DokuLeseHemmung ist offline
SELFPHP Experte
 
Registriert seit: Jun 2008
Alter: 15
Beiträge: 2.269
AW: Zählen von ";" in einer Zelle

Verstehe ich nicht.....



"Bücher"
id, Titel ....
1, Die roten Rosen
2, Gretel und das Hänschen

"Autoren" -
id, Name ....
1,willi
2,Heinrich
3,karl


Kreuztabelle
id, BücherID, AutorID
1,1,2
2,1,3
3,2,1
4,2,3
Mit Zitat antworten
  #15  
Alt 19.01.2015, 12:13:11
kidchino kidchino ist offline
Anfänger
 
Registriert seit: Jan 2015
Alter: 41
Beiträge: 19
AW: Zählen von ";" in einer Zelle

Hey,
danke für die Antwort, aber ich weiß halt nicht wie ich das technisch mache.
Ich weiß nicht wie in die Zuordnung erstelle.

Ich habe ja :
"Buch 1" | "Heinz; Karl; Willi" und ich weiß nicht mit welchen mysql Befehlen ich daraus

"Buch 1" | "AutorID1=Heinz"
"Buch 1" | "AutorID2=Karl"
"Buch 1" | "AutorID3=Willi"

mache.Also die Kreuztabelle erstelle.
Ich muss doch irgendwie den ersten Teil(Heinz) der Strings ("Heinz; Karl; Willi") dem Buch1 zuordnen (Join/Union/oder sowas) und dann den zweiten Teil (Karl) etc.

VG
Mit Zitat antworten
  #16  
Alt 19.01.2015, 12:35:41
DokuLeseHemmung DokuLeseHemmung ist offline
SELFPHP Experte
 
Registriert seit: Jun 2008
Alter: 15
Beiträge: 2.269
AW: Zählen von ";" in einer Zelle

Ich weiß auch nicht, was du da in SQL nehmen könntest.....
Deswegen ist deine ursprüngliche Struktur ja so bescheiden, so schlecht, weil SQL eben damit nur ganz ganz schlecht umgehen kann.... eigentlich gar nicht.
Das war ja schon dein Problem beim zählen.

Alternative:
Ich würde ein PHP Script drüber rodeln lassen....
Mit Zitat antworten
  #17  
Alt 19.01.2015, 15:26:56
Benutzerbild von BozzaCoon
BozzaCoon BozzaCoon ist offline
Anfänger
 
Registriert seit: Dec 2014
Alter: 35
Beiträge: 20
AW: Zählen von ";" in einer Zelle

Hallo kidchino,
ich hab mir mal die Arbeit gemacht es über PHPmyadmin (mySQL) duchzugehen...
Ich benutze noch den selben Lösungsansatz den ich schon beschrieben habe.

Zieltabelle: IDzwischen | Autor1 | Autor2 | Autor3 | Autor4
(ID generell wäre auch nicht schlecht gewesen hab ich erst im nachhinein bedacht [also eine spalte mehr mit autoincrement])
Code:
#insert into zwischentabelle

SELECT IDstart AS IDzwischen, 
substring_index(substring_index(autoren,';',1),';',-1) AS Autor1, 
substring_index(substring_index(autoren,';',2),';',-1) AS Autor2, 
substring_index(substring_index(autoren,';',3),';',-1) AS Autor3, 
substring_index(substring_index(autoren,';',4),';',-1) AS Autor4 
FROM erstetabelle 
where substring_index(substring_index(autoren,';',3),';',-1) != substring_index(substring_index(autoren,';',4),';',-1)
Hier erstellt man eine Tabelle die die Autoren in einzelne Spalten aufnehmen kann…

Jetzt löscht man den Inhalt wenn der Import in die andere Tabelle funktioniert hat…

Code:
update erstetabelle SET autoren = '' 
where substring_index(substring_index(autoren,';',3),';',-1) != substring_index(substring_index(autoren,';',4),';',-1)
ab jetzt von vorn aber so:
Code:
insert into zwischentabelle

SELECT IDstart AS IDzwischen, 
substring_index(substring_index(autoren,';',1),';',-1) AS Autor1, 
substring_index(substring_index(autoren,';',2),';',-1) AS Autor2, 
substring_index(substring_index(autoren,';',3),';',-1) AS Autor3,
null AS Autor4
FROM erstetabelle 
where substring_index(substring_index(autoren,';',2),';',-1) != substring_index(substring_index(autoren,';',3),';',-1)
für einen einzelnen Autoren müsste die anfrage für das inportieren so aussehen:
Code:
SELECT IDstart AS IDzwischen, 
substring_index(substring_index(autoren,';',1),';',-1) AS Autor1, 
null AS Autor2,
null AS Autor3,
null AS Autor4
FROM erstetabelle 
where autoren != ''
____________________________________________________________
Speichern in die Autorentabelle:
Code:
#insert into autoren (autor)

SELECT autor4
FROM zwischentabelle 
WHERE autor4 != ''
group by autor4
Ab dem zweiten einfügen muss man aufpassen das man Autoren nicht doppelt einfügt.
Code:
#insert into autoren (autor)
SELECT autor3 
FROM zwischentabelle 
WHERE autor3 != ''
and autor3 not in (select autor from  autoren)
group by autor3
und so weiter …
Damit lässt sich in der Zwischentabelle die Beziehung bewahren und du bekommst deine ursprungstabelle in eine Buchtiteltabelle
ID | Buch
und eine Autorentabelle
ID | Autor

Deine Aufgabe ist es noch die Beziehungstabelle zu erstellen. An dem Punkt habe ich
aufgehört darüber nachzudenken bin ja Hilfbereit aber kein 1zu1 Support.

Randinformationen:
- Tabellen in die du Inportieren möchtest musst du davor anlegen.
- Mach davor eine Sicherheitskopie indem du deine Datenbank exportierts (falls was schief geht)
- Lass immer das INSERT INTO am anfang weg oder als Kommentar damit du erstmal sehen kannst, ob die Anfrage funktioniert.

hoffe dieser Beitrag ist hilfreich.
Lg BozzaCoon
Mit Zitat antworten
  #18  
Alt 19.01.2015, 18:00:51
kidchino kidchino ist offline
Anfänger
 
Registriert seit: Jan 2015
Alter: 41
Beiträge: 19
AW: Zählen von ";" in einer Zelle

Hey BozzaCoon,

vielen Dank für die große Mühe. Ich werde es nachher gleich mal probieren.
Leider verstehe ich vom Sinn her nicht alles.
Ich glaube mein Problem ist immer noch, dass ich Bücher mit über 1200 Autoren habe.
Das ist doch ein Problem oder?#

LG und vielen Dank!!!!
Mit Zitat antworten
  #19  
Alt 19.01.2015, 20:18:26
Benutzerbild von BozzaCoon
BozzaCoon BozzaCoon ist offline
Anfänger
 
Registriert seit: Dec 2014
Alter: 35
Beiträge: 20
AW: Zählen von ";" in einer Zelle

Du hast ernsthaft Bücher in deiner Datenbank in der 1200 Autoren nacheinander aufgelistet sind?
Dann ist die Datenbank auf jedenfall "korrupt" und ist komplett wertlos...
Ich mein ... kann man nachvollziehen das an dem Buch wirklich so viele Autoren tätig waren?
Habe ich da eine Bildungslücke das es Bücher genre gibt wo so viele Autoren normal sind?
Ich komm darauf grade nicht klar... aber wenn 1200 Autoren eingetragen sind... und das nicht gewollt ist...
und du nicht weißt welche Einträge stimmen... kannst du die Datenbank vergessen...

oder ich versteh dein problem einfach nicht...
tut mir leid...

lg BozzaCoon
Mit Zitat antworten
  #20  
Alt 19.01.2015, 21:16:20
kidchino kidchino ist offline
Anfänger
 
Registriert seit: Jan 2015
Alter: 41
Beiträge: 19
AW: Zählen von ";" in einer Zelle

Hi,
ich hatte Bücher und Autor verwendet, da das ein sehr gängiges Bsp ist.
Eigentlich sind es keine Bücher sondern wissenschaftliche Artikel. Und leider ja, dort gibt es einen Artikel der hat 1268 Autoren. Insgesamt ist die Größenordnung zwar so:
1-500 Autoren (95%)
501-1268 Autoren (5%)
aber trotzdem gibt es viele mit mehr als 500 Autoren.

Das ist mein Problem :(

LG
Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen
Ansicht

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.

BB-Code ist an.
Smileys sind aus.
[IMG] Code ist aus.
HTML-Code ist aus.

Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
zählen wenn wonder PHP Grundlagen 8 22.12.2014 21:04:08
Tabelle in Forum-Post erstellen DerKontro HTML, CSS und JavaScript Help! 3 23.10.2007 15:03:32
Sonderzeichen und Ziffern zählen BeSt PHP Grundlagen 2 15.03.2006 19:43:57
Dateien zählen nach extensions selbi PHP Grundlagen 26 20.05.2005 08:23:52
Zeilenumbruch in Zelle verhindern? silberlocke HTML, CSS und JavaScript Help! 7 05.04.2005 14:18:20


Alle Zeitangaben in WEZ +2. Es ist jetzt 16:26:30 Uhr.


Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.


© 2001-2024 E-Mail SELFPHP OHG, info@selfphp.deImpressumKontakt