php.de

Zurück   php.de > Webentwicklung > Datenbanken

Datenbanken SQL und Co

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 12.01.2012, 22:31  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.987
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

Kannst Du gerne für die nachfolgenden Leser hier posten
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--
nikosch ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 12.01.2012, 22:32  
Erfahrener Benutzer
 
Registriert seit: 01.06.2011
Beiträge: 389
PHP-Kenntnisse:
Anfänger
achtelpetit befindet sich auf einem aufstrebenden Ast
Standard

Heißt das, Du baust ein Visual-Basic-Frontend für eine MySQL-DB?
achtelpetit ist offline   Mit Zitat antworten
Alt 12.01.2012, 22:51  
Neuer Benutzer
 
Registriert seit: 11.01.2012
Beiträge: 7
PHP-Kenntnisse:
Anfänger
Thorahn80 befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Heißt das, Du baust ein Visual-Basic-Frontend für eine MySQL-DB?
Ähm schon ... ist ja kostenlos und MS SQL Server kostet halt richtig Geld. Nicht gut?
Thorahn80 ist offline   Mit Zitat antworten
Alt 13.01.2012, 09:29  
Erfahrener Benutzer
 
Registriert seit: 01.06.2011
Beiträge: 389
PHP-Kenntnisse:
Anfänger
achtelpetit befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Nicht gut?
Nu ja, das kann ich nicht entscheiden, ich weiß ja nicht, was Du erreichen willst. Möglicherweise bist Du aber mit Access und VBA als Frontend schneller am Ziel; allerdings kostet Access einiges.
Zitat:
MS SQL Server kostet halt richtig Geld
Die Express-Version kostet nix und ist nur in Bezug auf RAM und Größe beschränkt.
achtelpetit ist offline   Mit Zitat antworten
Alt 13.01.2012, 16:17  
Erfahrener Benutzer
 
Registriert seit: 13.01.2012
Beiträge: 256
PHP-Kenntnisse:
Anfänger
akretschmer befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von Thorahn80 Beitrag anzeigen
Hi,

also ich es jetzt mal mit dem mittleren Teil versucht. Leider bekomme ich da als Ergebnis nur eine Spalte mit dem Datum.



Ich hab es dann mit folgender Abfrage versucht die mich meinem Ergebnis dann relativ nahe bringt. Zumindest stimmt das was er an Daten auswirft.

Code:
SELECT Mitarbeiter.datum, Mitarbeiter.Name, abwesenheiten.ausfall 
FROM Mitarbeiter 
LEFT JOIN abwesenheiten
ON abwesenheiten.datum = Mitarbeiter.datum
    AND abwesenheiten.persnr = Mitarbeiter.persnr 
ORDER BY Mitarbeiter.persnr, Mitarbeiter.datum;
Leider wäre es so sinnig, wie du schon schreibst, vorab einen bestimmten Mitarbeiter auszuwählen. Mein Ziel war es jedoch eine Übersicht von allen Mitarbeitern gleichzeitig zu erhalten.

Kann man vielleicht eine Tabelle automatisiert erzeugen lassen, wo die Spaltenbezeichnungen aus einer Selectanweisung generiert werden?

Für PostgreSQL gibt es dazu ein contrib-Modul. Aber generell ist SQL eher nicht geeignet für solch Kreuztabellen...


Andreas
akretschmer ist offline   Mit Zitat antworten
Alt 16.01.2012, 22:39  
Neuer Benutzer
 
Registriert seit: 11.01.2012
Beiträge: 7
PHP-Kenntnisse:
Anfänger
Thorahn80 befindet sich auf einem aufstrebenden Ast
Standard

Hallo Leute, sorry das es solange gedauert hat, aber ich war viel Unterwegs die letzten Tage.

Aber... wie versprochen hier der VB-Code für meine Kreuztabellenabfrage.

Code:
'// Erstellung Kreuztabellenabfrage in eine temporäre Tabelle \\
'Erstellung der Tabelle in welcher oben die Mitarbeiter und links das Datum und der Wochentag geschrieben wird.
TableCreationString = "CREATE TABLE IF NOT EXISTS
                                azerfassung.temp_abwesenheit (Datum DATE NOT 
                                NULL, Wochentag VARCHAR(15) NULL, " 
'Beginn des SQL-Befehls zur Erstellung der Tabelle

MyCommand.CommandText = "SELECT name AS name FROM
                                           query_personalabwesenheit GROUP BY name 
                                           ORDER BY name" 
'Abfrage zur Ermittlung des Inhaltes für den Rest des Erstellungsbefehls
 
MyCommand.Connection = MySQLCon
MySQLCon.Open()
MyReader = MyCommand.ExecuteReader
While MyReader.Read()
            TableCreationString = TableCreationString & "`" & (MyReader("name")
            & "` VARCHAR(80) NULL, ") 
'//Die Variable mit dem Beginn des SQL-Befehls wird solange erweitert wie
   Mitarbeiternamen in der Abfrage enthalten sind
End While

MyReader.Close()
MySQLCon.Close()

TableCreationString = TableCreationString & "PRIMARY KEY (datum));" 
'//Das Ende des SQL-Befehls wird der Variable hinzugefügt

MyCommand.CommandText = TableCreationString 
'Der fertige Befehl wird in die Datenbank geschrieben.

MySQLCon.Open()
MyCommand.ExecuteNonQuery()
MySQLCon.Close()

'//Befehl zum Einfügen des Auswertungszeitraumes (Datum und Wochentag) in zuvor erstellte Tabelle
InsertDatumString = "INSERT INTO azerfassung.temp_abwesenheit (Datum,
                              Wochentag) SELECT datum, wochentag FROM
                              query_personalabwesenheit GROUP BY datum;"

MyCommand.CommandText = InsertDatumString 
'// Befehl in die Datenbank schreiben.
MySQLCon.Open()
MyCommand.ExecuteNonQuery()
MySQLCon.Close()

'// Wertbereich für die Tabelle auslesen
MyCommand.CommandText = "SELECT datum, name, ausfall FROM 
                                           query_abwesenheiten;"
MyCommand.Connection = MySQLCon
MySQLCon.Open()
MyReader = MyCommand.ExecuteReader

While MyReader.Read()
         SQLDate = Format(MyReader("datum"), "yyyy-MM-dd")
'// Die einzelnen Ausfälle als SQL-Befehl in eine Variable geschrieben.
          InsertFailuresString = InsertFailuresString & ("UPDATE
                                        azerfassung.temp_abwesenheit SET `" & 
                                        MyReader("name") & "`='" & MyReader("ausfall")
                                        & "' WHERE Datum = '" & SQLDate & "'; ")
End While

MyReader.Close()
MySQLCon.Close()

MyCommand.CommandText = InsertFailuresString 
'//Der Wertbereich wird in die Datenbank geschrieben.

MySQLCon.Open()
MyCommand.ExecuteNonQuery()
MySQLCon.Close()

'// Kreutabellenabfrage FERTIG
Falls Ihr noch Fragen ... na dann schreibt. Vielleicht kann es ja noch jemand in PHP übersetzen wenn jemand mag.
Thorahn80 ist offline   Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
mysql kreuztabellenabfrage, kreuztabellenabfrage mysql, kreuztabelle in my sql, php mysql kreuztabelle

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




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum