myGully.com Boerse.SH - BOERSE.AM - BOERSE.IO - BOERSE.IM Boerse.BZ .TO Nachfolger
Zurück   myGully.com > Webmaster Talk > Entwicklung & Programmierung
Seite neu laden

mysql abfrage

Willkommen

myGully

Links

Forum

 
Thema geschlossen
Themen-Optionen Ansicht
Ungelesen 02.05.13, 19:17   #1
grendl
Anfänger
 
Registriert seit: Jan 2011
Beiträge: 8
Bedankt: 1
grendl ist noch neu hier! | 0 Respekt Punkte
Standard mysql abfrage

vielleicht kann mir wer helfen. habe gegoogelt bis zum gehtnichtmehr.

brauche eine abfrage, die mir doppelte datensätze liefert und davon die mit den niedrigeren ids

struktur: id, userid, score, ip, gameid, date, published

z.b.:


id userid score ip gameid date published
1 62 12 91.114.220.84 4 2010-01-24 12:43:33 1
2 62 20730 233.183.91.69 3 2010-06-02 00:15:17 1
3 62 1889 233.183.91.69 17 2010-02-26 13:51:21 1
4 62 1889 233.183.91.69 12 2010-02-26 13:51:21 1
6 75 36140 94.114.217.99 334 2010-10-14 12:49:33 1
7 65 11625 174.191.197.2 464 2010-10-05 15:55:23 1
8 75 3045 94.114.213.15 8 2011-01-07 20:18:56 1
10 65 3140 242.183.50.94 8 2011-01-08 10:05:06 1

so - also ich möchte von oberen daten nur die id "3" mit allen spalten - userid, score, ip und date sind gleich und davon den datensatz mit der niedrigern "id".

kann das wer - es sind insgesamt ca. 10.000 datensätze und auf 500 oder so trifft das zu..

hilfe

grendl ist offline  
Ungelesen 02.05.13, 21:37   #2
kkhamburg
Profi
 
Benutzerbild von kkhamburg
 
Registriert seit: May 2009
Ort: riding the roos
Beiträge: 1.468
Bedankt: 1.057
kkhamburg leckt gerne myGully Deckel in der Kanalisation! | 594749 Respekt Punktekkhamburg leckt gerne myGully Deckel in der Kanalisation! | 594749 Respekt Punktekkhamburg leckt gerne myGully Deckel in der Kanalisation! | 594749 Respekt Punktekkhamburg leckt gerne myGully Deckel in der Kanalisation! | 594749 Respekt Punktekkhamburg leckt gerne myGully Deckel in der Kanalisation! | 594749 Respekt Punktekkhamburg leckt gerne myGully Deckel in der Kanalisation! | 594749 Respekt Punktekkhamburg leckt gerne myGully Deckel in der Kanalisation! | 594749 Respekt Punktekkhamburg leckt gerne myGully Deckel in der Kanalisation! | 594749 Respekt Punktekkhamburg leckt gerne myGully Deckel in der Kanalisation! | 594749 Respekt Punktekkhamburg leckt gerne myGully Deckel in der Kanalisation! | 594749 Respekt Punktekkhamburg leckt gerne myGully Deckel in der Kanalisation! | 594749 Respekt Punkte
Standard

Das geht mit JOIN. Einfach die gleiche Datenbank per JOIN und den entsprechenden Bedingungen abfragen.
__________________

[ Link nur für registrierte Mitglieder sichtbar. Bitte einloggen oder neu registrieren ]


kkhamburg ist offline  
Ungelesen 03.05.13, 00:18   #3
grendl
Anfänger
 
Registriert seit: Jan 2011
Beiträge: 8
Bedankt: 1
grendl ist noch neu hier! | 0 Respekt Punkte
Standard

sorry - bin ein völliger anfänger - JOIN reicht mir leider nicht

hiermit kann ich alle doppelten anzeigen:

SELECT COUNT(*), score, date FROM arc_jvarcade
GROUP BY score, date
HAVING COUNT(*)>1

das problem ist, es sind nicht immer die richtige - es sollten nur die mit der niedrigeren "id" sein - kommt in meiner abfrage gar nicht vor - aber wie einfügen ??????
grendl ist offline  
Ungelesen 03.05.13, 05:51   #4
NetWebs
Banned
 
Registriert seit: Aug 2012
Beiträge: 223
Bedankt: 68
NetWebs ist noch neu hier! | 0 Respekt Punkte
Standard

Bei deiner Wissensbasis reicht googlen nicht.
Du musst dich schon mit SQL auseinandersetzen.

Keine Lust dazu?
Ist das ein kommerzielles Projekt?
NetWebs ist offline  
Ungelesen 03.05.13, 08:50   #5
grendl
Anfänger
 
Registriert seit: Jan 2011
Beiträge: 8
Bedankt: 1
grendl ist noch neu hier! | 0 Respekt Punkte
Standard

Zitat:
Zitat von NetWebs Beitrag anzeigen
Bei deiner Wissensbasis reicht googlen nicht.
Du musst dich schon mit SQL auseinandersetzen.

Keine Lust dazu?
Ist das ein kommerzielles Projekt?
Ach was - ich habe eine webseite in joomla und die komponente "jvarcade" - nach der migration von "puarcade" sind da in der datenbank viele scores doppelt (von ca. 10000 sind 2000 betroffen) - sieht dann nicht gut aus.

so wichtig ist es nicht, dass ich meinen hochschulabschluss nachhole. aber ich finde es auch traurig, wenn die "wissenden" mir nicht helfen wollen - ist doch nur eine select-abfrage....
grendl ist offline  
Ungelesen 03.05.13, 17:03   #6
grendl
Anfänger
 
Registriert seit: Jan 2011
Beiträge: 8
Bedankt: 1
grendl ist noch neu hier! | 0 Respekt Punkte
Standard

wissenbasis ist <0

aber ich sehe schon - hier wird mir nicht geholfen - jeder macht mich fertig anstatt die scheinbar ja so einfache abfrage einfach reinzuschreiben
grendl ist offline  
Ungelesen 03.05.13, 19:34   #7
kkhamburg
Profi
 
Benutzerbild von kkhamburg
 
Registriert seit: May 2009
Ort: riding the roos
Beiträge: 1.468
Bedankt: 1.057
kkhamburg leckt gerne myGully Deckel in der Kanalisation! | 594749 Respekt Punktekkhamburg leckt gerne myGully Deckel in der Kanalisation! | 594749 Respekt Punktekkhamburg leckt gerne myGully Deckel in der Kanalisation! | 594749 Respekt Punktekkhamburg leckt gerne myGully Deckel in der Kanalisation! | 594749 Respekt Punktekkhamburg leckt gerne myGully Deckel in der Kanalisation! | 594749 Respekt Punktekkhamburg leckt gerne myGully Deckel in der Kanalisation! | 594749 Respekt Punktekkhamburg leckt gerne myGully Deckel in der Kanalisation! | 594749 Respekt Punktekkhamburg leckt gerne myGully Deckel in der Kanalisation! | 594749 Respekt Punktekkhamburg leckt gerne myGully Deckel in der Kanalisation! | 594749 Respekt Punktekkhamburg leckt gerne myGully Deckel in der Kanalisation! | 594749 Respekt Punktekkhamburg leckt gerne myGully Deckel in der Kanalisation! | 594749 Respekt Punkte
Standard

Soweit ich das sehe wirst du hier nicht fertig gemacht.

Fakt ist aber das du, statt selber deinen Kopf mal ein klein wenig anzustrengen, lieber den bequemen Weg gehen willst.

Ein einfaches googeln nach "Mysql doppelte Datensätze Join" hätte dich z.B. zu diesem Ergebnis geführt :

Zitat:
SELECT * from Zustaende AS t1
INNER JOIN Zustaende AS t2
ON t1.zahl<t2.zahl AND t1.id=t2.id
Das wirst du ja sicherlich für deine Anforderung umstellen können.
__________________

[ Link nur für registrierte Mitglieder sichtbar. Bitte einloggen oder neu registrieren ]


kkhamburg ist offline  
Ungelesen 03.05.13, 20:16   #8
Epeos
Ist öfter hier
 
Benutzerbild von Epeos
 
Registriert seit: Nov 2010
Beiträge: 200
Bedankt: 96
Epeos ist noch neu hier! | 0 Respekt Punkte
Standard

Zitat:
SELECT COUNT(*), score, date FROM arc_jvarcade
GROUP BY score, date
HAVING COUNT(*)>1
ist schon gar nicht so schlecht. Mit
Code:
SELECT MIN(id) FROM arc_jvarcade
GROUP BY score, date
HAVING COUNT(*)>1
kriegst Du die jeweils die niedrigste id. Wenn Du tatsächlich den ganzen Datensatz haben willst, dann packst Du die in ein Subselect, so:

Code:
SELECT * FROM arc_ivarcade
WHERE id IN
(SELECT MIN(id) FROM arc_jvarcade
GROUP BY score, date
HAVING COUNT(*)>1
)
Achtung: Subselects sind in MySQL nicht immer performant. Kann also eine Weile laufen.
__________________
On a long enough timeline, the survival rate for everyone drops to zero. (Fight Club)
Epeos ist offline  
Ungelesen 03.05.13, 20:19   #9
NetWebs
Banned
 
Registriert seit: Aug 2012
Beiträge: 223
Bedankt: 68
NetWebs ist noch neu hier! | 0 Respekt Punkte
Standard

Zitat:
Zitat von Epeos Beitrag anzeigen
Achtung: Subselects sind in MySQL nicht immer performant. Kann also eine Weile laufen.
Deshalb wird sowas auch mit einem JOIN gemacht!
Siehe erste Antwort...
NetWebs ist offline  
Ungelesen 05.05.13, 07:11   #10
Epeos
Ist öfter hier
 
Benutzerbild von Epeos
 
Registriert seit: Nov 2010
Beiträge: 200
Bedankt: 96
Epeos ist noch neu hier! | 0 Respekt Punkte
Standard

Zitat:
Zitat von NetWebs Beitrag anzeigen
Deshalb wird sowas auch mit einem JOIN gemacht!
Siehe erste Antwort...
Da ich immer gerne dazu lerne: Wie sieht diese Abfrage denn mit JOIN und ohne Subselect aus???
__________________
On a long enough timeline, the survival rate for everyone drops to zero. (Fight Club)
Epeos ist offline  
Ungelesen 05.05.13, 08:03   #11
kkhamburg
Profi
 
Benutzerbild von kkhamburg
 
Registriert seit: May 2009
Ort: riding the roos
Beiträge: 1.468
Bedankt: 1.057
kkhamburg leckt gerne myGully Deckel in der Kanalisation! | 594749 Respekt Punktekkhamburg leckt gerne myGully Deckel in der Kanalisation! | 594749 Respekt Punktekkhamburg leckt gerne myGully Deckel in der Kanalisation! | 594749 Respekt Punktekkhamburg leckt gerne myGully Deckel in der Kanalisation! | 594749 Respekt Punktekkhamburg leckt gerne myGully Deckel in der Kanalisation! | 594749 Respekt Punktekkhamburg leckt gerne myGully Deckel in der Kanalisation! | 594749 Respekt Punktekkhamburg leckt gerne myGully Deckel in der Kanalisation! | 594749 Respekt Punktekkhamburg leckt gerne myGully Deckel in der Kanalisation! | 594749 Respekt Punktekkhamburg leckt gerne myGully Deckel in der Kanalisation! | 594749 Respekt Punktekkhamburg leckt gerne myGully Deckel in der Kanalisation! | 594749 Respekt Punktekkhamburg leckt gerne myGully Deckel in der Kanalisation! | 594749 Respekt Punkte
Standard

Die Frage ist doch bereits in diesem Thread beantwortet
__________________

[ Link nur für registrierte Mitglieder sichtbar. Bitte einloggen oder neu registrieren ]


kkhamburg ist offline  
Ungelesen 05.05.13, 08:22   #12
Epeos
Ist öfter hier
 
Benutzerbild von Epeos
 
Registriert seit: Nov 2010
Beiträge: 200
Bedankt: 96
Epeos ist noch neu hier! | 0 Respekt Punkte
Standard

Mea culpa, hatte in Deinem Quote das "t1.zahl<t2.zahl" überlesen.

Aber ob der JOIN bei der ON-Bedingung schneller ist, weiss wohl nur der Optimizer.
__________________
On a long enough timeline, the survival rate for everyone drops to zero. (Fight Club)
Epeos ist offline  
Ungelesen 05.05.13, 08:41   #13
kkhamburg
Profi
 
Benutzerbild von kkhamburg
 
Registriert seit: May 2009
Ort: riding the roos
Beiträge: 1.468
Bedankt: 1.057
kkhamburg leckt gerne myGully Deckel in der Kanalisation! | 594749 Respekt Punktekkhamburg leckt gerne myGully Deckel in der Kanalisation! | 594749 Respekt Punktekkhamburg leckt gerne myGully Deckel in der Kanalisation! | 594749 Respekt Punktekkhamburg leckt gerne myGully Deckel in der Kanalisation! | 594749 Respekt Punktekkhamburg leckt gerne myGully Deckel in der Kanalisation! | 594749 Respekt Punktekkhamburg leckt gerne myGully Deckel in der Kanalisation! | 594749 Respekt Punktekkhamburg leckt gerne myGully Deckel in der Kanalisation! | 594749 Respekt Punktekkhamburg leckt gerne myGully Deckel in der Kanalisation! | 594749 Respekt Punktekkhamburg leckt gerne myGully Deckel in der Kanalisation! | 594749 Respekt Punktekkhamburg leckt gerne myGully Deckel in der Kanalisation! | 594749 Respekt Punktekkhamburg leckt gerne myGully Deckel in der Kanalisation! | 594749 Respekt Punkte
Standard

Wenn du meinst.

Lustig aber das du JOIN gar nicht kanntest und selber schreibst das Subselects nicht performant sind.
Vielleicht solltest du JOIN erst einmal nutzen bevor du eine Meinung dazu abgibst.
__________________

[ Link nur für registrierte Mitglieder sichtbar. Bitte einloggen oder neu registrieren ]


kkhamburg ist offline  
Ungelesen 05.05.13, 18:21   #14
Epeos
Ist öfter hier
 
Benutzerbild von Epeos
 
Registriert seit: Nov 2010
Beiträge: 200
Bedankt: 96
Epeos ist noch neu hier! | 0 Respekt Punkte
Standard

Wie kommst Du auf die Idee, ich kenne kein JOIN? Ich benutze das nur nicht mit "<"-Bedingung.

Übrigens habe ich grad mal getestet. Die Abfrage mit Subselect ist mit 10.000 Datensätzen deutlich schneller als die Abfrage per JOIN (auf meinem Rechner um den Faktor 2000). Hat sich bei MySQL in den letzten Versionen doch ein bisschen was getan.
__________________
On a long enough timeline, the survival rate for everyone drops to zero. (Fight Club)
Epeos ist offline  
Ungelesen 05.05.13, 19:28   #15
NetWebs
Banned
 
Registriert seit: Aug 2012
Beiträge: 223
Bedankt: 68
NetWebs ist noch neu hier! | 0 Respekt Punkte
Standard

Zitat:
Zitat von Epeos Beitrag anzeigen
Übrigens habe ich grad mal getestet.
Du solltest dann mal ganz schnell Deine wissenschaftlichen Erkenntnisse in einem Fachmagazin veröffentlichen, denn fälschlicherweise dachte man in der Informatik und unter den DBAs, dass JOINS schneller als Subselects sind (bis auf Ausnahmen, falls die Datenbankstruktur von einem Amateur angelegt wurde o.ä.).

Aber gut, dass Du das rausgefunden hast. Ich werde morgen früh eine Mail an alle 50 Entwickler bei uns schreiben, dass Subselects schneller als JOINS sind und auf diesen Thread verweisen. Du hast es ja mal grad getestet. In der scheint ein unglaubliches Talent zu stecken... dass Du so eine Erkenntnis mal eben testen kannst ohne jemals eine DBA-Qualifikation gehabt zu haben. Suchst Du einen Job?
NetWebs ist offline  
Ungelesen 05.05.13, 21:25   #16
kkhamburg
Profi
 
Benutzerbild von kkhamburg
 
Registriert seit: May 2009
Ort: riding the roos
Beiträge: 1.468
Bedankt: 1.057
kkhamburg leckt gerne myGully Deckel in der Kanalisation! | 594749 Respekt Punktekkhamburg leckt gerne myGully Deckel in der Kanalisation! | 594749 Respekt Punktekkhamburg leckt gerne myGully Deckel in der Kanalisation! | 594749 Respekt Punktekkhamburg leckt gerne myGully Deckel in der Kanalisation! | 594749 Respekt Punktekkhamburg leckt gerne myGully Deckel in der Kanalisation! | 594749 Respekt Punktekkhamburg leckt gerne myGully Deckel in der Kanalisation! | 594749 Respekt Punktekkhamburg leckt gerne myGully Deckel in der Kanalisation! | 594749 Respekt Punktekkhamburg leckt gerne myGully Deckel in der Kanalisation! | 594749 Respekt Punktekkhamburg leckt gerne myGully Deckel in der Kanalisation! | 594749 Respekt Punktekkhamburg leckt gerne myGully Deckel in der Kanalisation! | 594749 Respekt Punktekkhamburg leckt gerne myGully Deckel in der Kanalisation! | 594749 Respekt Punkte
Standard

Zitat:
Zitat von Epeos Beitrag anzeigen
Wie kommst Du auf die Idee, ich kenne kein JOIN? Ich benutze das nur nicht mit "<"-Bedingung.
Wenn du JOIN doch kennst frage ich mich ernsthaft wieso du hier nach dem Syntax fragen musst. Da die Bedingung ON obligatorisch ist für JOIN liegt es wohl nicht so fern innerhalb der Bedingung mit allen verfügbaren Operatoren zu arbeiten.

Zitat:
Zitat von Epeos Beitrag anzeigen
Übrigens habe ich grad mal getestet. Die Abfrage mit Subselect ist mit 10.000 Datensätzen deutlich schneller als die Abfrage per JOIN (auf meinem Rechner um den Faktor 2000). Hat sich bei MySQL in den letzten Versionen doch ein bisschen was getan.
Wenn das dein Ergebnis ist, solltest du dringend etwas an der Indizierung der abgefragen Datenbank tun. Warum das so ist verrät dir das Handbuch zu MySQL.

Da die Frage des TE beantwortet ist und er sich hier auch nicht mehr zu Wort meldet mache ich hier mal dicht.
__________________

[ Link nur für registrierte Mitglieder sichtbar. Bitte einloggen oder neu registrieren ]


kkhamburg ist offline  
Thema geschlossen


Forumregeln
Du kannst keine neue Themen eröffnen
Du kannst keine Antworten verfassen
Du kannst keine Anhänge posten
Du kannst nicht deine Beiträge editieren

BB code is An
Smileys sind An.
[IMG] Code ist An.
HTML-Code ist Aus.

Gehe zu


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:57 Uhr.


Sitemap

().