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

MySQL - Datensätze in Abfrage duplizieren

Frage Entwicklung Datenbanken

Mitglied: Maik87

Maik87 (Level 2) - Jetzt verbinden

04.12.2012 um 16:24 Uhr, 6189 Aufrufe, 10 Kommentare

Hallo zusammen,

ich habe in MySQL eine Tabelle:

Spalte A:
1
2
3
4
5
...


Nun kann ich diese wie folgt abfragen:
"SELECT A FROM..."

Wie bekomme ich es aber nun hin, dass ich folgende Ausgabe habe:

1,A
1,B
2,A
2,B
3,A
3,B
...

Ich möchte also jeden Datensatz nochmal duplizieren und jeweils eine Spalte mit dem Wert "A" oder "B" anhängen.

Wie sieht hierfür die Abfrage aus?
Mitglied: Biber
04.12.2012, aktualisiert 30.12.2012
Moin Maik87,

wozu auch immer das gut sein soll...

01.
SELECT spalteA, 'A' as whatever FROM dyTable 
02.
UNION ALL 
03.
SELECT spalteA, 'B' as whatever FROM dyTable 
04.
order by 1, 2
Grüße
Biber
Bitte warten ..
Mitglied: Maik87
30.12.2012 um 01:13 Uhr
Danke Biber!
Anders gehts aber nicht, oder? Also ohne dass ich die Query zwei mal auführen muss.
Bitte warten ..
Mitglied: Biber
30.12.2012 um 15:52 Uhr
Moin Maik87,

mit SQL geht es immer auch anders...

du kannst dir auch eine Tabelle "whatever" anlegen mit einem Char(1)-Textfeld namens SpalteB, zwei Datensätze mit dem Inhalt "A" und "B" anlegen und dann ein Statement wie folgt formulieren:
01.
SELECT dytable.SpalteA, whatever.SpalteB 
02.
FROM dytable, whatever 
03.
ORDER by 1, 2
Nichtsdestotrotz - eigentlich werden erst mit SQL-Statements Daten durchflöht und dann kommt ein mehr oder weniger erwartetes Resultset zurück.

Der Ansatz "Ich habe ein feststehendes Endergebnis und bau mir die entsprechenden Quelldaten entsprechend" ist zumindest in den alten SQL-Spezifikationen meiner Jugend noch nicht so explizit ausformuliert.

Was ist denn die konkrete Aufgabenstellung, die hinter deiner Frage steht?

Grüße
Biber
Bitte warten ..
Mitglied: Maik87
30.01.2013 um 12:34 Uhr
Hallo Biber,

sorry, dass ich mich erst jetzt melde.

Danke für den Code - klappt

Die Aufgabe sieht wie folgt aus:
Ich habe eine Tabelle, mit den Spalten "Abteilung", "Geschlecht" und "Anzahl".

Die gibt zum Beispiel folgendes aus:
EDV m 10
Einkauf w 1
Einkauf m 2

Jetzt wollte ich die Tabelle so aufbrechen, dass ich bei EDV auch eine Zeile für "w" bekomme, auch wenn hier keine Daten drin sind. Nur, damit es leichter zu lesen ist. Auf der anderen Seite baue ich mit PHP eine Pflegeseite auf, bei der "EDV" und "w" auch ankommen soll, damit dort überhaupt eine Anzahl eingepflegt werden kann.

Ich hoffe, du verstehst was ich meine
Bitte warten ..
Mitglied: LianenSchwinger
30.01.2013, aktualisiert um 16:08 Uhr
Ohne UNION ALL kommst Du hier nicht weiter.

01.
SELECT x.abteilung AS Abteilung, 
02.
       'm' AS Geschlecht, 
03.
       IFNULL(y.anzahl,0) AS Anzahl 
04.
FROM (SELECT DISTINCT a.abteilung FROM xy_tabelle AS a) AS x 
05.
LEFT JOIN (SELECT a.* FROM xy_tabelle AS a WHERE a.geschlecht = 'm') AS y USING(abteilung) 
06.
 
07.
UNION ALL 
08.
 
09.
SELECT x.abteilung AS Abteilung, 
10.
       'w' AS Geschlecht, 
11.
       IFNULL(y.anzahl,0) AS Anzahl 
12.
FROM (SELECT DISTINCT a.abteilung FROM xy_tabelle AS a) AS x 
13.
LEFT JOIN (SELECT a.* FROM xy_tabelle AS a WHERE a.geschlecht = 'w') AS y USING(abteilung)
Zwar andere Baustelle, aber warum speicherst Du nicht Anzahl m und Anzahl w in einer Zeile.

01.
Abteilung Anz_M Anz_W 
02.
EDV          10     0 
03.
EINKAUF       2     1


Alles eine Frage des Tabellenaufbaus.

Kommt das Ergebnis Deiner Tabelle nicht schon aus einer anderen Abfrage über die Mitarbeiter einer Abteilung?

Gruß Jörg
Bitte warten ..
Mitglied: Maik87
31.01.2013 um 10:17 Uhr
Moin,

also ich habe es mit einer weiteren Tabelle "SplittingValues" gelöst - wie in Bibers letztem Beispiel.

Läuft prima so!

Nee, die Daten kommen nicht aus einer anderen Tabelle. Sie kommen so aufbereitet aus SAP.
Anzahl w und m geht nicht in eine Zeile, so noch mehr Informationen in der Zeile stehen. So werden beispielsweise noch Daten wie Gesundheitsstand, davon Teilzeitkräfte etc. je "Abteilung-Geschlecht"-Zeile gespeichert.
Bitte warten ..
Mitglied: Biber
01.02.2013 um 04:01 Uhr
[OT]
Zitat von Maik87:
Moin,

also ich habe es mit einer weiteren Tabelle "SplittingValues" gelöst - wie in Bibers letztem Beispiel.
Hmmja, wenn ich diese Dummytabelle für die m/w-Info sprechend zu benennen gehabt hätte, dann würde sie wohl "AlwaysSex" heissen...

Aber "SplittingValues" ist immerhin sprechender als "whatever".

Grüße
Biber
[/OT]
Bitte warten ..
Mitglied: Maik87
01.02.2013, aktualisiert um 08:53 Uhr


Ich habe die Tabelle noch mit anderen SplittingValues für andere Abfragen gefüllt.

01.
SELECT dytable.SpalteA, SplittingValues.SpalteB  
02.
FROM dytable, SplittingValues  
03.
WHERE SplittingValues.SpalteB IN ('w','m') 
04.
ORDER by 1, 2

So kann ich das Ding dynamisch überall einsetzen


Edit:
Fehler im Code behoben.
Bitte warten ..
Mitglied: LianenSchwinger
01.02.2013 um 08:28 Uhr
... Du meinst wohl

01.
WHERE SplittingValues.SpalteB IN ('w','m')
G Jörg
Bitte warten ..
Mitglied: Maik87
01.02.2013 um 08:53 Uhr
Sorry - natürlich mein ich das.
Bitte warten ..
Ähnliche Inhalte
Datenbanken
MySQL - Anzahl der Datensätze in Abfrage verringern
Frage von mabue88Datenbanken4 Kommentare

Hallo, ich habe ein System, in dem dessen Benutzer diverse Aktionen ausführen können. Die von den Benutzern ausgelösten Aktionen ...

PHP
MySQL Update eines Datensatz mit Variable
gelöst Frage von Jens4everPHP4 Kommentare

Hallo zusammen, ich habe jetzt 2 h gesucht und versucht und komme gerade nicht weiter Ich habe eine Mail-Verifizierung ...

Datenbanken
MYSQL Abfrage
gelöst Frage von datadexxDatenbanken20 Kommentare

Halo an alle MySQL Spezialisten! Wie kann ich denn am besten folgende Werte abfragen und berechnen? Ausgang für die ...

Datenbanken
MySQL Function Anzahl Datensätze ermitteln
gelöst Frage von MultiStormDatenbanken4 Kommentare

Hallo, aktuell stehe ich vor einem Problem bei dem ich nicht weiter komme. ich wollte mit eine MySQL funtion ...

Neue Wissensbeiträge
Viren und Trojaner

Deaktivierter Keylogger in HP Notebooks entdeckt

Information von bitcoin vor 14 StundenViren und Trojaner1 Kommentar

Ein Grund mehr warum man Vorinstallationen der Hersteller immer blank bügeln sollte Der deaktivierte Keylogger findet sich im vorinstallierten ...

Router & Routing

Lets Encrypt kommt auf die FritzBox

Information von bitcoin vor 17 StundenRouter & Routing

In der neuesten Labor-Version der FB7490 integriert AVM unter anderem einen Let's Encrypt Client für Zugriffe auf das Webinterface ...

Internet

Was nützt HTTPS, wenn es auch von Phishing Web-Seiten genutzt wird

Information von Penny.Cilin vor 3 TagenInternet17 Kommentare

HTTPS richtig einschätzen Ob man eine Webseite via HTTPS aufruft, zeigt ein Schloss neben der Adresse im Webbrowser an. ...

Webbrowser

Bugfix für Firefox Quantum released - Installation erfolgt teilweise nicht automatisch!

Erfahrungsbericht von Volchy vor 4 TagenWebbrowser8 Kommentare

Hallo zusammen, gem. dem Artike von heise online wurde mit VersionFirefox 57.0.1 sicherheitsrelevante Bugs behoben. Entgegen der aktuellen Veröffentlichung ...

Heiß diskutierte Inhalte
Batch & Shell
Trusted Sites für alle User auf dem PC einpflegen
Frage von xXTaKuZaXxBatch & Shell12 Kommentare

Aufgabestellung: Es sollen auf 1 PC (bzw. mehreren PCs) vertrauenswürdige Sites per Powershell eingetragen werden, die für alle User ...

Voice over IP
Telefonstörung - Ortsrufnummern kein Verbindungsaufbau
Frage von Windows10GegnerVoice over IP10 Kommentare

Hallo, sowohl bei uns als auch beim Opa ist es über VoIP nicht möglich Ortsrufnummern anzurufen. Es kommt nach ...

Vmware
DOS 6.22 in VMWare mit CD-ROM
gelöst Frage von hesperVmware10 Kommentare

Hallo zusammen! Ich hab ein saublödes Problem. Es ist eine VMWare mit DOS 6.22 zu erstellen auf dem ein ...

Cloud-Dienste
PIM als SaaS Nutzungsgebühr
Frage von vanTastCloud-Dienste8 Kommentare

Moin, wir haben uns ein PIM (Product Information Management) nach unseren Ansprüchen für viel Geld als SaaS-Lösung bauen lassen. ...