MySQL Spalte zusammenfassen

Hallo,

ich habe folgende Frage:

Wenn ich eine DB habe in der ich z.B. mehrere Abteilungen habe, in denen wiederrum mehrere Leute erbeiten und ich eine Abfrage mache, in deren Ergebnis ich angezeigt bekommen möchte welche Mitarbeiter welcher Abteilung zugeteilt ist, bekomme ich folgende Ausgabe:

Abteilung | Mitarbeiter
----1-----|-----X-----
----1-----|-----y-----
----1-----|-----z-----
----2-----|-----a-----
----2-----|-----b-----
usw.

Ist es möglich diese Ausgabe folgendermassen zu bekommen:

Abteilung | Mitarbeiter
----1-----|-----x
----------------y
----------------z
----2-----|-----a
----------------b

?

Das würde das ganze etwas übersichtlicher machen.

Und noch was:

wenn ich Daten eingebe, dann mache ich das wie folgt:

INSERT INTO table (Spalte1, Spalte2, …)
VALUES (‚1‘,‚2‘,…);

Und dann wieder die ganze prozedur für die nächste Zeile. Kann man das nicht schneller machen? z.B.:

INSERT INTO table (Spalte1, Spalte2, …)
VALUES (‚1‘,‚2‘,…);
VALUES (‚1‘,‚2‘,…);
VALUES (‚1‘,‚2‘,…);
VALUES (‚1‘,‚2‘,…);

Ich hoffe, dass ihr mir weiterhelfen könnt.

Ich sag aber jetzt schon mal DANKE :wink:

MFG

BC

Moin, BC,

schau Dir mal das Theam „Bericht“ in der Hilfe an, dort „gruppieren“.

Der INSERT mit „Values“ fügt genau eine Zeile ein. Die zweite Form mit „Select“ erzeugt so viele Zeilen, wie der Select Treffer liefert.

Gruß Ralf

Hallo Ralf,

schau Dir mal das Theam „Bericht“ in der Hilfe an, dort
„gruppieren“.

Von welcher Hilfe sprichst du? Ich habe MySQL Server 5.0, aber kein Programm dahinter, sondern arbeite nur mit dem Prompt. Und das Reference Manual mag für Leute gut sein, die nur was nachschlagen müssen und nicht wie ich gerade den Umgang mit MySQL erlernen…

Der INSERT mit „Values“ fügt genau eine Zeile ein.

Hm, ok. Ich hätt’s halt gern schneller gehabt. Denn wenn ich 100 Datensätze aufnehmen will, müsste ich 200 Zeilen schreiben… Aber gut. Ich werd mal sehen, dass ich mir vielleicht ein kleines Programm schreibe, dass mir diese Arbeit abnimmt.

Danke erst mal für die bisherige Antwort.

Gruß

BC

Hm, ok. Ich hätt’s halt gern schneller gehabt. Denn wenn ich
100 Datensätze aufnehmen will, müsste ich 200 Zeilen
schreiben…

Ha! Das Problem konnte ich lösen. Wenn man das „,“ nicht am Zeilenende vergisst, bevor man den zweiten Datensatz einträgt, also:
INSERT INTO X (a,b,c)
VALUES (‚1‘,‚2‘,‚3‘),(‚4‘,‚5‘,‚6‘),…

dann geht’s auch.

Bleibt leider noch immer das Problem mit dem Gruppieren…

Moin, BC,

Von welcher Hilfe sprichst du?

oh je, das war ein Parallaxenfehler - ich wähnte mich immer noch im Brett Access-Datenbanken.

Die Forderung, die Du stellst, erfüllen nur Reporting-Tools, mit SQL ist das nicht zu erreichen. Ich weiß leider nicht, ob so etwas in MySQL verfügbar ist.

Gruß Ralf

Moin, BC,

Ha! Das Problem konnte ich lösen. Wenn man das „,“ nicht am
Zeilenende vergisst, bevor man den zweiten Datensatz einträgt,
also:
INSERT INTO X (a,b,c)
VALUES (‚1‘,‚2‘,‚3‘),(‚4‘,‚5‘,‚6‘),…
dann geht’s auch.

da scheint MySQL einer der wenigen DB-Hersteller zu sein, die den Insert gemäß SQL-Standard implementiert haben.

Ich erstelle mir für solche Zwecke bei Bedarf eine Textdatei mit den Daten und schaufle sie per LOAD oder Import hinein. Deutlich weniger Schreibarbeit, hat aber wohl nicht jede DB :frowning:

Gruß Ralf

Danke

oh je, das war ein Parallaxenfehler - ich wähnte mich immer
noch im Brett Access-Datenbanken.

Nein, du warst/bist im SQL Brett. Bei Access hätte ich die Hilfe dann sicherlich auch gefunden :wink: Aber kann ja mal passieren.

Die Forderung, die Du stellst, erfüllen nur Reporting-Tools,
mit SQL ist das nicht zu erreichen. Ich weiß leider nicht, ob
so etwas in MySQL verfügbar ist.

Hm, schade. Aber gut, dann muss ich halt die Ausgabe entsprechend formatieren. Ist halt ein bissl mehr Arbeit.

Danke für die schnelle Hilfe

LG

BC

Hallo,

Hi

Ist es möglich diese Ausgabe folgendermassen zu bekommen:

Abteilung | Mitarbeiter
----1-----|-----x
----------------y
----------------z
----2-----|-----a
----------------b

?

Ja, du kannst alles ausgeben wie du Lust und Laune hast, nur sortieren musst du es dir schon selbst oder du schreibst ein script dafür. Ich hab mal ein Script für deine Ausgabe.

$test = mysql_query(„SELECT * FROM mitarbeiter ORDER BY Abteilung_Name ASC“);

$pruef=$sql[Abteilung_Name];
$Abt=$sql[Abteilung_Name];
echo „Abteilung
Mitarbeiter
„;
while ($sql = mysql_fetch_array($test))
{
if($sql[Abteilung_Name] == $pruef){
$Abt=““;
$Mit=$sql[Mitarbeiter_Name];
}
else {
$pruef = $sql[Abteilung_Name];
$Abt=$sql[Abteilung_Name];
$Mit=$sql[Mitarbeiter_Name];
}

echo " $Abt
$Mit

";
}
echo „“;

Ein Screenshot davon…
http://img293.imageshack.us/my.php?image=wwwabtmit1j…

wenn ich Daten eingebe, dann mache ich das wie folgt:

INSERT INTO table (Spalte1, Spalte2, …)
VALUES (‚1‘,‚2‘,…);

Und dann wieder die ganze prozedur für die nächste Zeile. Kann
man das nicht schneller machen?


$Abtzaehler=0;
while($Abtzaehler";
$Mitzaehler++;
}
$Abtzaehler++;
}

Und noch ein Screenshot…
http://img297.imageshack.us/my.php?image=wwwabtmitau…
So eine automatische Eingabe ist zwar nicht unbedingt hübsch, aber praktisch - für Testzwecke.

Ich sag aber jetzt schon mal DANKE :wink:

So, mal schnell vor mich hinprogrammiert, funktioniert jedenfalls :smile:
Die Scripte kann man bestimmt noch besser machen, aber zur Demonstration reicht es.

MFG
BC

MfG
pherson