php.de

Zurück   php.de > Webentwicklung > Datenbanken

Datenbanken SQL und Co

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 28.01.2012, 17:05  
Neuer Benutzer
 
Registriert seit: 28.01.2012
Beiträge: 7
PHP-Kenntnisse:
Anfänger
norebo befindet sich auf einem aufstrebenden Ast
Standard Sortierfunktion mit COUNT für Dubletten gesucht

Hallo zusammen,

ich versuche schon seit 2 Tagen eine spezielle Sortierfunktion mit COUNT für Doubletten in der DB zu erstellen.
Die Ausgangsbasis der Tabelle ist wie folgt:

point alias
------------------
point6 alias_z
point1 alias_x
point3 alias_y
point5 alias_x
point2 alias_x
point4 alias_z
point7 alias_x

Daraus soll dann die nachfolgende Tabelle folgen:
point alias id_count
------------------------------
point1 alias_x 4
point5 alias_x 4
point2 alias_x 4
point7 alias_x 4
point3 alias_y 1
point6 alias_z 2
point4 alias_z 2

Eigentlich entspricht das in etwa dem Code:
SELECT point, alias FROM Tabelle ORDER BY alias ASC

Hier fehlt mir der Zusatz, das alle "alias"-Dubletten in einer Extra-Spalte (id_count) anzeigt. Allerdings sollen die doppelten "alias"-Einträge weiterhin angezeigt werden - das ist das große Problem.

Gibt es für diesen speziellen Fall überhaupt eine Lösung? Denn ich habe bereits einige Foren durchforstet und bekomme lediglich eine Ausgabe in der zwar alle doppelten "alias"-Einträge gezählt werden, aber dann auch nur 1x aufgelistet.

Was noch erschwerend dazu kommt:
Die Tabelle hat mehrere 100.000 Einträge. Es sollte also nach Möglichkeit auch noch eine performante Lösung sein
Bin wirklich gespannt ob es dafür eine Lösung gibt...

Gruß
Sascha
norebo ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 28.01.2012, 17:44  
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 norebo Beitrag anzeigen
Hallo zusammen,

ich versuche schon seit 2 Tagen eine spezielle Sortierfunktion mit COUNT für Doubletten in der DB zu erstellen.
Die Ausgangsbasis der Tabelle ist wie folgt:

point alias
------------------
point6 alias_z
point1 alias_x
point3 alias_y
point5 alias_x
point2 alias_x
point4 alias_z
point7 alias_x

Daraus soll dann die nachfolgende Tabelle folgen:
point alias id_count
------------------------------
point1 alias_x 4
point5 alias_x 4
point2 alias_x 4
point7 alias_x 4
point3 alias_y 1
point6 alias_z 2
point4 alias_z 2

Eigentlich entspricht das in etwa dem Code:
SELECT point, alias FROM Tabelle ORDER BY alias ASC

Hier fehlt mir der Zusatz, das alle "alias"-Dubletten in einer Extra-Spalte (id_count) anzeigt. Allerdings sollen die doppelten "alias"-Einträge weiterhin angezeigt werden - das ist das große Problem.

Gibt es für diesen speziellen Fall überhaupt eine Lösung? Denn ich habe bereits einige Foren durchforstet und bekomme lediglich eine Ausgabe in der zwar alle doppelten "alias"-Einträge gezählt werden, aber dann auch nur 1x aufgelistet.

Was noch erschwerend dazu kommt:
Die Tabelle hat mehrere 100.000 Einträge. Es sollte also nach Möglichkeit auch noch eine performante Lösung sein
Bin wirklich gespannt ob es dafür eine Lösung gibt...

Gruß
Sascha

Einfach:

Code:
test=*# select * from norebo ;
 point  |  alias
--------+---------
 point6 | alias_z
 point1 | alias_x
 point3 | alias_y
 point5 | alias_x
 point2 | alias_x
 point4 | alias_z
 point7 | alias_x
(7 rows)

Time: 0,196 ms
test=*# select point, alias, count(*) over (partition by alias) from norebo ;
 point  |  alias  | count
--------+---------+-------
 point5 | alias_x |     4
 point1 | alias_x |     4
 point2 | alias_x |     4
 point7 | alias_x |     4
 point3 | alias_y |     1
 point4 | alias_z |     2
 point6 | alias_z |     2
(7 rows)

Andreas
akretschmer ist offline   Mit Zitat antworten
Alt 28.01.2012, 19:34  
Neuer Benutzer
 
Registriert seit: 28.01.2012
Beiträge: 7
PHP-Kenntnisse:
Anfänger
norebo befindet sich auf einem aufstrebenden Ast
Standard

Hi Andreas,

danke erstmal für Deine schnelle Antwort. Ich kann die Syntax zwar nachvollziehen, wenn ich aber
select point, alias, count(*) over (partition by alias) from sim_icd_cvt;
eingebe, bekomme ich folgende Fehlermeldung:
[SQL] select point, alias, count(*) over (partition by alias) from sim_icd_cvt;
[Err] 1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '(partition by alias) from sim_icd_cvt' at line 1

Hast Du eine Idee?

VG!
Sascha
norebo ist offline   Mit Zitat antworten
Alt 28.01.2012, 19:39  
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 norebo Beitrag anzeigen
Hi Andreas,

danke erstmal für Deine schnelle Antwort. Ich kann die Syntax zwar nachvollziehen, wenn ich aber
select point, alias, count(*) over (partition by alias) from sim_icd_cvt;
eingebe, bekomme ich folgende Fehlermeldung:
[SQL] select point, alias, count(*) over (partition by alias) from sim_icd_cvt;
[Err] 1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '(partition by alias) from sim_icd_cvt' at line 1

Hast Du eine Idee?

VG!
Sascha

Ach, Du verwendest noch MySQL? Ja, dann geht das halt ned,mein Beileid...
akretschmer ist offline   Mit Zitat antworten
Alt 28.01.2012, 19:42  
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

Left Join von Tabelle auf gruppierte Tabelle
__________________
--
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
Alt 28.01.2012, 19:57  
Neuer Benutzer
 
Registriert seit: 28.01.2012
Beiträge: 7
PHP-Kenntnisse:
Anfänger
norebo befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von nikosch Beitrag anzeigen
Left Join von Tabelle auf gruppierte Tabelle
Thx - aber sobald ich die GROUP BY Funktion aufrufe, bekomme ich die Doublette nicht mehr angezeigt
norebo ist offline   Mit Zitat antworten
Alt 28.01.2012, 20:48  
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 norebo Beitrag anzeigen
Thx - aber sobald ich die GROUP BY Funktion aufrufe, bekomme ich die Doublette nicht mehr angezeigt
Das ist der Sinn von GROUP BY, daher hab ich es nicht verwendet, weil Du es anders wolltest.

Andreas
akretschmer ist offline   Mit Zitat antworten
Alt 28.01.2012, 20:54  
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 akretschmer Beitrag anzeigen
Ach, Du verwendest noch MySQL? Ja, dann geht das halt ned,mein Beileid...
Ach ja: ich verwende PostgreSQL.

Andreas
akretschmer ist offline   Mit Zitat antworten
Alt 28.01.2012, 21:25  
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

Zitat:
Thx - aber sobald ich die GROUP BY Funktion aufrufe, bekomme ich die Doublette nicht mehr angezeigt
Ja. Lies einfach nochmal meine Antwort LEFT JOIN AUF gruppierte Tabelle
__________________
--
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
Alt 29.01.2012, 00:06  
Neuer Benutzer
 
Registriert seit: 28.01.2012
Beiträge: 7
PHP-Kenntnisse:
Anfänger
norebo befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von nikosch Beitrag anzeigen
Ja. Lies einfach nochmal meine Antwort LEFT JOIN AUF gruppierte Tabelle
Hi,
vielleicht stehe ich etwas auf dem Schlauch oder habe mein Problem nicht ganz eindeutig beschrieben, denn die zu suchenden Datensätze befinden sich alle in einer Tabelle.

Gruß
Sascha
norebo 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

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
[Erledigt] MySQL: SUM, COUNT, GROUP BY sortieren comlar Datenbanken 3 21.10.2010 00:25
[Erledigt] Dubletten louis Datenbanken 12 15.03.2010 10:58
Junior iPhone Entwickler/in gesucht - mit PHP-Kenntnissen (Essen) osxpert Beitragsarchiv 0 10.09.2009 16:34
BigSkull Studios-Verstärkung gesucht Nuc Beitragsarchiv 36 12.02.2009 17:05
Count über mehrere Tabellenspalten plastic Datenbanken 3 20.10.2006 17:52
"Column count doesn't match value count at row 1" möchtegernchegga Datenbanken 3 05.03.2006 16:07
UPDATE count nach Link Aufruf ? PHP Tipps 2006 9 22.01.2006 14:53
Redakteure für sehr großes Projekt gesucht Beitragsarchiv 1 19.08.2005 01:57
MySQL error: Column count doesn't match value count at row 1 atom-dragon PHP Tipps 2005-2 4 21.07.2005 01:38
PEAR::DB LimitQuery was ist Count? PHP Tipps 2005-2 3 06.06.2005 18:02
Dubletten herausfiltern mit verbinden 2er tabellen. robo47 Datenbanken 2 12.05.2005 11:59
mehrere COUNT() auf selbe Tabelle und »can't reopen table« tapferesschneiderlein Datenbanken 3 04.04.2005 13:51
[Erledigt] COUNT() Problematik... Datenbanken 2 20.08.2004 13:48

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
mssql2005 sortierung dubletten, php ausgabe dubletten anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 16:51 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