php.de

Zurück   php.de > Webentwicklung > Datenbanken

Datenbanken SQL und Co

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 02.01.2012, 15:08  
Neuer Benutzer
 
Registriert seit: 02.01.2012
Beiträge: 6
PHP-Kenntnisse:
Anfänger
pardus befindet sich auf einem aufstrebenden Ast
Standard [Erledigt] PHP / MySQL Doppelte Datenbankeinträge ausgeben lassen

Hallo,

in einer Datenbank (Warenbestand) sind manche Artikelnummern doppelt vergeben, allerdings mit unterschiedlicher Warenbezeichnung, Preis, etc.

Also Beispiel:
Art.Nr. 1111 Mousepad 3,50
Art.Nr. 1111 USB-Kabel 1,90
Art.Nr. 2222 Winkelstecker 0,30
Art.Nr. 3333 Keyboard 19,90
Art.Nr. 3333 Headset 14,75
Art.Nr. 4444 LCD-Monitor 189,00

Nun möchte ich mir alle doppelten bzw. mehrfachen Einträge anzeigen lassen.


Code:
$ergebnis = mysql_query("select artikelnummer, bezeichnung, preis
                              from tabelle
                              group by artikelnummer
                              having count(artikelnummer) > 1");

while($row=mysql_fetch_object($ergebnis)) {
            echo '$row->artikelnummer.' | '.$row->bezeichnung.' | '.$row->preis.'<br>'; }
Das funktioniert auch prima, allerdings wird mir immer nur 1 Eintrag der mehrfach vorhanden angezeigt.

Also:
Art.Nr. 1111 Mousepad 3,50
Art.Nr. 3333 Keyboard 19,90
(Ist ja auch irgendwie logisch mit "group by".)


Ich will aber das:
Art.Nr. 1111 Mousepad 3,50
Art.Nr. 1111 USB-Kabel 1,90
Art.Nr. 3333 Keyboard 19,90
Art.Nr. 3333 Headset 14,75

Ich hab mich jetzt schon Stunden durchs Netz geforstet und zahlreiche Beispiele gefunden, die funktionieren aber nicht. Hab das Manual gewälzt, ich steig da einfach nicht durch.

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

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

Alt 02.01.2012, 15:17  
Erfahrener Benutzer
 
Registriert seit: 02.09.2009
Beiträge: 1.019
PHP-Kenntnisse:
Fortgeschritten
mquadrat befindet sich auf einem aufstrebenden Ast
Standard

Code:
select artikelnummer, bezeichnung, preis from tabelle where artikelnummer in 
(
  select artikelnummer from tabelle group by artikelnummer having count(artikelnummer) > 1
)
order by artikelnummer, bezeichnung
__________________
Wir suchen PHP Entwickler (Vollzeit) im Raum Darmstadt / Rhein-Main. Infos via E-Mail mueller@new-frontiers.de
mquadrat ist offline   Mit Zitat antworten
Alt 02.01.2012, 15:18  
Erfahrener Benutzer
 
Registriert seit: 07.12.2009
Beiträge: 843
PHP-Kenntnisse:
Fortgeschritten
chorn befindet sich auf einem aufstrebenden Ast
Standard

das funktioniert doch

http://www.georglutz.de/blog/2009/08...banken-finden/
chorn ist offline   Mit Zitat antworten
Alt 02.01.2012, 18:15  
Neuer Benutzer
 
Registriert seit: 02.01.2012
Beiträge: 6
PHP-Kenntnisse:
Anfänger
pardus befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von mquadrat Beitrag anzeigen
Code:
select artikelnummer, bezeichnung, preis from tabelle where artikelnummer in 
(
  select artikelnummer from tabelle group by artikelnummer having count(artikelnummer) > 1
)
order by artikelnummer, bezeichnung

Danke für die schnelle Antwort. Das legt mir aber leider die Datenbank lahm. Indizies sind gesetzt. Nach Aufruf reagiert auch nach Stunden nichts, ich konnte den Prozess nur noch auf dem Server killen.
pardus ist offline   Mit Zitat antworten
Alt 03.01.2012, 10:41  
Erfahrener Benutzer
 
Registriert seit: 02.09.2009
Beiträge: 1.019
PHP-Kenntnisse:
Fortgeschritten
mquadrat befindet sich auf einem aufstrebenden Ast
Standard

Wieviele Datensätze sind denn da drin?

Du könntest dir auch noch einen View oder eine temporäre Tabelle mti den doppelten Nummern anlegen und dann Joinen. Würde die Subquery vermeiden.
__________________
Wir suchen PHP Entwickler (Vollzeit) im Raum Darmstadt / Rhein-Main. Infos via E-Mail mueller@new-frontiers.de
mquadrat ist offline   Mit Zitat antworten
Alt 03.01.2012, 12:51  
Neuer Benutzer
 
Registriert seit: 02.01.2012
Beiträge: 6
PHP-Kenntnisse:
Anfänger
pardus befindet sich auf einem aufstrebenden Ast
Standard

ca. 90.000 Datensätze, eigentlich nicht die Welt.
pardus ist offline   Mit Zitat antworten
Alt 04.01.2012, 10:05  
Erfahrener Benutzer
 
Registriert seit: 02.09.2009
Beiträge: 1.019
PHP-Kenntnisse:
Fortgeschritten
mquadrat befindet sich auf einem aufstrebenden Ast
Standard

Den View mal probiert?
__________________
Wir suchen PHP Entwickler (Vollzeit) im Raum Darmstadt / Rhein-Main. Infos via E-Mail mueller@new-frontiers.de
mquadrat ist offline   Mit Zitat antworten
Alt 04.01.2012, 12:05  
Neuer Benutzer
 
Registriert seit: 02.01.2012
Beiträge: 6
PHP-Kenntnisse:
Anfänger
pardus befindet sich auf einem aufstrebenden Ast
Standard

In die Views muß ich mich erstmal einarbeiten, ich bin mehr oder weniger Anfänger. Deshalb ging ich in Deinem vorherigen Posting nicht darauf ein Aber ich werd mich mal durchkämpfen
pardus ist offline   Mit Zitat antworten
Alt 04.01.2012, 13:08  
Erfahrener Benutzer
 
Registriert seit: 01.09.2010
Beiträge: 4.561
PHP-Kenntnisse:
Fortgeschritten
eagle275 ist ein sehr geschätzer Menscheagle275 ist ein sehr geschätzer Menscheagle275 ist ein sehr geschätzer Mensch
Standard

hmmm.. wenn der sub-select deine Datenbank "einfriert" - dann müsste es doch mit einem "normalen" Join performanter gehen

Code:
select 
   (distinct a.artikelnummer) as anummer, b.artikelnummer, b.preis
from 
   tabelle as a 
LEFT JOIN tabelle as b 
having count(b.artikelnummer)>1
als allgemeiner Hinweis - wenn du mit den Preisen rechnen willst / musst, bietet es sich an, sie nicht als Dezimalzahlen zu speichern (wegen der Float-Ungenauigkeit) sondern stattdessen in cents umgerechnet als (Long)-Integerzahlen.
__________________
"Irren ist männlich", sprach der Igel und stieg von der Drahtbürste
eagle275 ist offline   Mit Zitat antworten
Alt 17.01.2012, 18:21  
Neuer Benutzer
 
Registriert seit: 02.01.2012
Beiträge: 6
PHP-Kenntnisse:
Anfänger
pardus befindet sich auf einem aufstrebenden Ast
Standard

Also ich habs jetzt so gelöst, daß ich für jeden Datensatz einzeln abfrage, wie oft er vorhanden ist. Läuft flüssig und damit das Script nicht wegen Zeitüberschreitung abbricht, refreshe ich die Seite nach 1000 Datensätzen. Dafür daß ich das nur etwa 1x im Monat benutze, muß das erstmal so reichen. Ich markiere das Thema daher als gelöst. Danke nochmals für die Hilfe
pardus 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 Abfrage in mehreren Tabellen ausgeben Camee PHP Tipps 2010 2 03.11.2010 23:58
php / mysql array in variable / zeichenkette ausgeben raffnix PHP-Fortgeschrittene 17 23.04.2010 15:23
MySql Inhalte in Excel ausgeben bierfest PHP Tipps 2009 3 04.11.2009 00:13
ausgeben von mehreren tabellen mysql SpecialFighter PHP Tipps 2009 9 15.10.2009 18:41
MySQL Zelleninhalt als Variable ausgeben macman PHP Tipps 2009 12 03.09.2009 11:36
(MySQL) Ergebnisse Zählen und sortiert ausgeben... Hawk Datenbanken 5 04.03.2007 17:08
MySQL daten auf verschienden seiten ausgeben DiveMaster88 PHP Tipps 2006 4 27.11.2006 04:12
mysql - text ausgeben dws PHP Tipps 2006 14 15.06.2006 22:50
MYSQL Abfrage umgekehrt ausgeben PHP Tipps 2006 4 18.01.2006 21:19
doppelte Werte / Strings einer Spalte nur einmal ausgeben... Datenbanken 2 29.07.2005 12:10
Mehrere Zeilen aus MySQl ausgeben... King2k PHP Tipps 2005 4 31.05.2005 20:05
Links aus MySql ausgeben PHP Tipps 2005 3 27.05.2005 12:11
mysql daten ohne html formatierung ausgeben wizzardxx PHP Tipps 2005 2 28.03.2005 00:56
Templates Datenbankeinträge ausgeben PHP Tipps 2005 4 04.02.2005 20:58
Datenbankeinträge sortiert ausgeben lassen PHP Tipps 2004 3 22.10.2004 22:10

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
doppelte mysql einträge anzeigen php, php duplikate ausgeben, mysql doppelte einträge einzeln ausgeben, mysql doppelte daten ausgeben, php mysql doppelten datensatz, php mysql string zählen und anzahl ausgeben, mysql view doppelt ausgeben, mysql doppelt eintrag als 1 ausgeben, php mysql artikelnummer vergeben, mysql doppelte eintäge ausgebene, mysql ein duplikate anzeigen lassen, mysql doppelte ausgeben, doppelten wert 1 mal ausgeben php mysql, dopplelte namen in db ausgeben mysql, mysql abfrage gleiche nur 1 mal ausgeben, duplikate ausgeben php mysql, php mysql einträge werden doppelt angezeigt, doppelte datenbankeinträge, doppelten mysql php eintrag suchen, select doppelte artnr

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