Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

gelöst Array aus Datenbankabfrage zusammenfassen uns sortieren

Mitglied: TheAlex

TheAlex (Level 1) - Jetzt verbinden

22.02.2018 um 14:02 Uhr, 616 Aufrufe, 8 Kommentare

Hallo Liebe Administrator.de Community,

Ich stehe vor einem Problem das Array aus meiner Datenbankabfrage zusammenzufassen und sortiert ausgeben zu lassen.

Hier mal ein Bild der Datenbank:
database - Klicke auf das Bild, um es zu vergrößern

Das Array das meine Datenbankabfrage zurück gibt sieht so aus:

01.
Array
02.
(
03.
    [0] => Array
04.
        (
05.
            [mitarbeiter] => Administrator
06.
            [cal_day] => 1
07.
            [ma_wish] => Dienst
08.
            [mid] => 1
09.
        )
10.

11.
    [1] => Array
12.
        (
13.
            [mitarbeiter] => Administrator
14.
            [cal_day] => 4
15.
            [ma_wish] => Frei
16.
            [mid] => 1
17.
        )
18.

19.
    [2] => Array
20.
        (
21.
            [mitarbeiter] => Administrator
22.
            [cal_day] => 6
23.
            [ma_wish] => Frei
24.
            [mid] => 1
25.
        )
26.

27.
    [3] => Array
28.
        (
29.
            [mitarbeiter] => Administrator
30.
            [cal_day] => 9
31.
            [ma_wish] => Dienst
32.
            [mid] => 1
33.
        )
34.

35.
    [4] => Array
36.
        (
37.
            [mitarbeiter] => Administrator
38.
            [cal_day] => 12
39.
            [ma_wish] => Dienst
40.
            [mid] => 1
41.
        )
42.

43.
    [5] => Array
44.
        (
45.
            [mitarbeiter] => Administrator
46.
            [cal_day] => 18
47.
            [ma_wish] => Frei
48.
            [mid] => 1
49.
        )
50.

51.
    [6] => Array
52.
        (
53.
            [mitarbeiter] => Administrator
54.
            [cal_day] => 22
55.
            [ma_wish] => Dienst
56.
            [mid] => 1
57.
        )
58.

59.
    [7] => Array
60.
        (
61.
            [mitarbeiter] => Administrator
62.
            [cal_day] => 24
63.
            [ma_wish] => Dienst
64.
            [mid] => 1
65.
        )
66.

67.
    [8] => Array
68.
        (
69.
            [mitarbeiter] => Administrator
70.
            [cal_day] => 27
71.
            [ma_wish] => Frei
72.
            [mid] => 1
73.
        )
74.

75.
    [9] => Array
76.
        (
77.
            [mitarbeiter] => Administrator
78.
            [cal_day] => 30
79.
            [ma_wish] => Frei
80.
            [mid] => 1
81.
        )
82.

83.
    [10] => Array
84.
        (
85.
            [mitarbeiter] => testuser
86.
            [cal_day] => 3
87.
            [ma_wish] => Dienst
88.
            [mid] => 2
89.
        )
90.

91.
)
Ich benötige jetzt ein array mit dem es mir möglich ist ein array zu erzeugen das so aussieht:
01.
array(
02.
    [mid-des-users] => Array
03.
        (
04.
            [mitarbeiter] => name
05.
            [dienst] => die cal_day's wenn ma_wish = dienst)
06.
            [frei] => die cal_day's wenn ma_wish = frei)
07.
            [mid] => 2
08.
        )
09.
       )
Bin schon seit tagen am testen und tüffteln habe jedeoch noch keine möglichkeit gefunden um dies zu bewerkstelligen.

Über jede Hilfe und jeden Tipp bin ich dankbar!
Mitglied: em-pie
22.02.2018 um 14:51 Uhr
Moin,

warum erledigst du das nicht direkt mit der SQL-Abfrage, statt das nachträglich "umbiegen" zu wollen?

Stichwort Inner Join

01.
select
02.
  tbl1.name, tbl1.cal_days as "dienst", tbl2.cal_days as "frei"
03.
 From 
04.
 (select name, cal_year, cal_mon, Count(cal_days) as cal_days, 'dienst' as wish from table where ma_wish =  "dienst" group by name, cal_year, cal_mon) as tbl1
05.
Inner join
06.
 (select name, cal_year, cal_mon, Count(cal_days) as cal_days, 'frei' as wish from table where ma_wish =  "frei" group by name, cal_year, cal_mon) as tbl2 on tbl1.name = tbl2.name
07.
Gruß
em-pie
Bitte warten ..
Mitglied: TheAlex
22.02.2018 um 15:25 Uhr
Und mit dieserAbfrage werden auch alle cal_day nacheinander aufgelistet die abgefragt werden wenn sie der selben kategorie(ma_wish) angehören?
Bitte warten ..
Mitglied: 135333
22.02.2018, aktualisiert um 16:29 Uhr
Erst mit array_unique alle Eindeutigen ma_wish Werte holen und dann in einer Schleife das Array erneut filtern mit array_filter

Beispiel:
01.
foreach(array_unique(array_column($array,'ma_wish')) as $cat){
02.
	echo "Category '$cat':<br />";
03.
	foreach($array as $user){
04.
		if($user['ma_wish'] == $cat){
05.
			echo $user['mitarbeiter'] . "<br />";
06.
		}
07.
	}
08.
}
Gruß Snap
Bitte warten ..
Mitglied: TheAlex
22.02.2018 um 16:01 Uhr
01.
select
02.
  tbl1.mitarbeiter, tbl1.cal_day as 'dienst', tbl2.cal_day as 'frei'
03.
 From 
04.
 (select mitarbeiter, cal_day, implode(', ', 'cal_day') as cal_day from ma_wishes where ma_wish ='Dienst' group by mitarbeiter, cal_day, cal_mon) as tbl1
05.
Inner join
06.
 (select mitarbeiter, cal_day, implode(', ', 'cal_day') as cal_days from ma_wishes where ma_wish =  'Frei' group by mitarbeiter, cal_day, cal_mon) as tbl2 on tbl1.mitarbeiter = tbl2.mitarbeiter
Habe den so angepasst, nur funktioniert implode ja nicht in einem query^^
Bitte warten ..
Mitglied: em-pie
22.02.2018 um 16:10 Uhr
Was willst du denn mit implode inhaltlich bewerkstelligen (also was implode() macht, weiss ich)?
Willst du dann in Spalte "dienst" alle Tage aneinandergereiht haben, an denen der MA "Dienst" hat und in Spalte "frei" dann selbiges, nur für die avisierten freien Tage?
Quasi:

NAME | DIENST | FREI
Max Mustermann | 1,12,13,24,25,29 | 2,13,19,27,28
Gisela Mustermann | 2,13,14,26,27,28 | 1,10,19,25,30
Bitte warten ..
Mitglied: TheAlex
22.02.2018 um 16:31 Uhr
Genau das war meine Idee.

Nur kam ich nicht weiter damit.
Bitte warten ..
Mitglied: em-pie
22.02.2018 um 16:58 Uhr
Dann beschäftige dich mal hiermit:
https://www.mssqltips.com/sqlservertip/2914/rolling-up-multiple-rows-int ...
http://carlosferreira.com/how-to-combine-values-from-multiple-rows-of-a ...

Stichwörter (für die Nachwelt hier):
  • XML-Path
  • STUFF

scheint ja genau das zu sein, was du willst. Du musst dann vermutlich nur mit Gruppierungen "herumspielen"....

Du müsstenst dann nur mal nach der Syntax für MySQL suchen....
Bitte warten ..
Mitglied: TheAlex
22.02.2018, aktualisiert um 18:34 Uhr
em-pie wäre es möglich mir ein lauffähiges beispiel zu erstellen? Ich lerne leider nicht gut in der Theorie, doch was ich gesehen habe verstehe und lerne ich schnell.

01.
$stmt = $this->conn->prepare("select
02.
  tbl1.mitarbeiter, tbl1.cal_day as 'dienst', tbl2.cal_day as 'frei'
03.
 From 
04.
 (select mitarbeiter, mid, cal_day from ma_wishes where ma_wish ='Dienst' group by mid ) as tbl1
05.
Inner join
06.
 (select mitarbeiter, mid, cal_day from ma_wishes where ma_wish ='Frei' group by mid) as tbl2 on tbl1.mitarbeiter = tbl2.mitarbeiter");
Das derzeit der Query, allerdings gibt er mir nur einen eintrag aus. Der zweite user der in der DB steht fehlt?!?

01.
Array
02.
(
03.
    [0] => Array
04.
        (
05.
            [mitarbeiter] => Administrator
06.
            [dienst] => 1
07.
            [frei] => 4
08.
        )
09.

10.
)
Bitte warten ..
Ähnliche Inhalte
JavaScript
Javascript Array
gelöst Frage von internet2107JavaScript2 Kommentare

Ich habe folgendes Problem. Ersetze ich die folgenden Zahlen gegen Variablenwerte, bekomme ich nicht das Ergebnis, wie mit festen ...

Batch & Shell

Leere Array-Werte aus einem Array entfernen

gelöst Frage von ToniHoBatch & Shell3 Kommentare

Hallo zusammen, ich bin dabei ein Powershell-Script zu schreiben, welches diverse Reports generieren kann. Für die Eingabe von SamAccountNames ...

PHP

Array kürzen

gelöst Frage von dax4funPHP6 Kommentare

Es tut was es soll, aber kann man das irgendwie kürzen da ich jede mögliche art versucht habe Arrays ...

PHP

Array Filtern bei mehreren Werten innerhalb eines Array

gelöst Frage von LorderichPHP3 Kommentare

Hallo zusammen, ich habe folgendes Array: Array ( resource => Array ( 0 => Array ( ID => 3 ...

Neue Wissensbeiträge
DSL, VDSL

Einwahlparameter verschiedener deutscher DSL-Provider mit VLAN ID

Tipp von the-buccaneer vor 10 StundenDSL, VDSL

Ohne Gewähr für Aktualität. Im Netz gefunden. Buc

Batch & Shell
Powershell-Scripts ohne Anzeige aufrufen
Tipp von fritzo vor 10 StundenBatch & Shell

Ich habe ein Powershell-Script geschrieben, welches personalisierte Vorlagenpfade für MS Office für den angemeldeten User aus dem Active Directory ...

Sicherheits-Tools

CDBurnerXP Updates werden als unerwünschted Programm angezeigt Win32 FusionCore.T

Information von StefanKittel vor 11 StundenSicherheits-Tools

Hallo, dies ist nur eine Information. ich verteile bei einigen sehr kleinen Kunden 3rd parity Updates mit NinitePro. Heute ...

Windows 10

Aus der Reihe "Windows 10 und der Datenschutz"

Information von Trontur vor 15 StundenWindows 103 Kommentare

"Unter dem Druck der Datenschutz-Grundverordnung (DSGVO) kommt Microsoft den europäischen Kunden peu à peu entgegen. Wenn sich Windows 10 ...

Heiß diskutierte Inhalte
VB for Applications
VBScript: Einzelne Zeile in einer Datei ersetzen (restlicher Inhalt bleibt unangetastet)
Frage von GizmotroniXVB for Applications31 Kommentare

Hallo zusammen, ich versuche seit 3 Tagen für einen speziellen Anwendungsfall in unserem Unternehmen ein Script zu erstellen. Ich ...

Outlook & Mail
Outlook Profile 2019
Frage von AkcentOutlook & Mail16 Kommentare

Hallo, vor Outlook 2019 konnte man unter der Systemsteuerung noch die Outlook Profile und Mailkonten ohne Outlook zu starten ...

Windows 10
Daten auf SSD verschwunden
Frage von m.riefWindows 1015 Kommentare

Guten Abend, Ich habe heute ein Notebook neu installiert da die Festplatte Probleme machte. Nun ist Windows 10 1909 ...

Windows Server
Win2016 - Shadowcopies werden nicht aufgelistet
gelöst Frage von emeriksWindows Server15 Kommentare

Hi, habe hier ein seltsames Problem: Win 2016 Server mit 4 Daten-Volumes Für jedes Volume werden mehrmals am Tag ...