php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > SQL / Datenbanken
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


SQL / Datenbanken Probleme mit SQL? Hier könnt ihr eure Fragen zu SQL (MySQL, PostgreSQL, MS-SQL und andere ANSI-SQL Server) los werden.

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #1 (permalink)  
Alt 11-01-2008, 00:26
Laire
 Registrierter Benutzer
Links : Onlinestatus : Laire ist offline
Registriert seit: May 2004
Beiträge: 739
Laire ist zur Zeit noch ein unbeschriebenes Blatt
Standard [LEFT JOIN] Weiteres Left Join Anhängen mit Sortierfunktion

Hallo,


ich habe folgende Abfrage:

Zitat:
SELECT
`t1_cod4key`.`key_key`,
`t1_cod4key`.`key_count`,
`t1_cod4changenick`.`changenick_nick`
FROM
`t1_cod4key`
Left Join `t1_cod4ban` ON `t1_cod4key`.`key_key` = `t1_cod4ban`.`ban_key`
Left Join `t1_cod4changenick` ON `t1_cod4key`.`key_key` = `t1_cod4changenick`.`changenick_key`
WHERE
`t1_cod4ban`.`ban_key` IS NULL
ORDER BY
`t1_cod4key`.`key_count` DESC
LIMIT 20
Jetzt habe ich ein weiter Tabelle die angefügt werden sol. Diese Tabelle sie folgendermassen aus:

NICK_ID | NICK_KEY | NICK_NICK | NICK_COUNT


Zu jedem KEY kann es mehrer NICK geben. Ich möchte jetzt gerne den übereinstimmenden KEY anhängen, wobei dann die Spalte genommen werden soll in der COUNT am größten ist.

z.B.

NICK_KEY NICK_NICK NICK_COUNT
ab123 Bernd 2
ab123 Hubert 9
ab123 Dethlef 10
hg623 Dieter 11
hg623 Karl 1


jetzt soll er mir obern, wo der Key ab123 angezeigt wird Dethlef anhängen und wo der Key hg 623 angzeigt wird Dieter anhängen.

Leider bekomme ich das nicht in einer Abfrage hin :-(
Mit Zitat antworten
  #2 (permalink)  
Alt 11-01-2008, 06:00
Benutzerbild von onemorenerd onemorenerd
  Moderator
Links : Onlinestatus : onemorenerd ist offline
Registriert seit: Mar 2005
Ort: Berlin
Beiträge: 9.471
onemorenerd wird schon bald berühmt werdenonemorenerd wird schon bald berühmt werden
Standard

SELECT
`t1_cod4key`.`key_key`AS key,
`t1_cod4key`.`key_count`AS count,
`t1_cod4changenick`.`changenick_nick`AS changes
...
GROUP BY key HAVING MAX(changes)
ORDER BY changes DESC
LIMIT 20
Mit Zitat antworten
  #3 (permalink)  
Alt 11-01-2008, 09:21
Laire
 Registrierter Benutzer
Links : Onlinestatus : Laire ist offline
Registriert seit: May 2004
Beiträge: 739
Laire ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Bin ich nicht ganz schlau draus geworden.

HAbe aber es mal versucht einzubauen, bekomme aber ein falsches ergebniss und werde auch nicht draus schlau, da das völlig zusammengwürfelt aussieht...



Zitat:
SELECT
`t1_cod4key`.`key_key`,
`t1_cod4key`.`key_count`,
`t1_cod4changenick`.`changenick_nick`,
`t1_cod4keynick`.`nick_nick`,
`t1_cod4keynick`.`nick_count`
FROM
`t1_cod4key`
Left Join `t1_cod4ban` ON `t1_cod4key`.`key_key` = `t1_cod4keynick`.`nick_key`
Left Join `t1_cod4changenick` ON `t1_cod4key`.`key_key` = `t1_cod4changenick`.`changenick_key`
Inner Join `t1_cod4keynick` ON `t1_cod4key`.`key_key` = `t1_cod4keynick`.`nick_key`
WHERE
`t1_cod4ban`.`ban_key` IS NULL
GROUP BY
`t1_cod4keynick`.`nick_count`
HAVING
MAX(`t1_cod4keynick`.`nick_count`)
ORDER BY
`t1_cod4key`.`key_count` DESC
LIMIT 20
Es werden jetzt von einem Key mehrer Einträge angzeigt, obwohl er nur den key anzeigen soll, mit dem dazugehörigen nick, der nick ist derjenige, der den größten wert in der tabelle keynick bei dem Feld count hat und den gleichen key

Geändert von Laire (11-01-2008 um 09:34 Uhr)
Mit Zitat antworten
  #4 (permalink)  
Alt 11-01-2008, 09:38
H2O
 PHP Junior
Links : Onlinestatus : H2O ist offline
Registriert seit: Jul 2007
Beiträge: 937
H2O ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zuerst mal
  • Lass die ganzen Backticks weg, die machen alles unlesbar. Wenn du die benötigst, stimmt dein DB-Design nicht.
  • Auch SQL-Code kann eingerückt werden, um lesbarer zu sein
  • Ich würde Aliases benutzen statt diese ellenlangen Tabellennnamen immer wieder zu wiederholen
  • Vorbildlich ist deine Gross-Kleinschreibung!
Und nun zum Problem: Mit GROUP BY wirst du in diesem Fall nicht weiter kommen, weil du dann für alle nicht direkt von den in der GROUP BY-Klausel enthaltenen Attributen 1:1 abhämgigen Daten zufällige Ergebnisse erhälst (Was für ein Satz!). Ich kenne ausser MySQL auch kein DBMS, dass solche Befehle erlaubt. Ich denke, du benötigst hier einen Subselect, etwa so ähnlich diesem:
Code:
SELECT
	t1.key_key,
	t1.key_count,
	t2.changenick_nick,
	t4.nick_nick
	
FROM
	t1_cod4key	t1
LEFT JOIN 
	t1_cod4ban t2 ON t1.key_key = t2.ban_key
LEFT JOIN 
	t1_cod4changenick t3 ON t1.key_key = t3.changenick_key
LEFT JOIN 
	neue_tabelle t4 ON t1.key_key = t4.nick_key
WHERE
	t2.ban_key IS NULL
  AND
  	t4.nick_count = (
  		SELECT
  			MAX(nick_count)
  		FROM
  			neue_tabelle
  		WHERE
  			nick_key = t1.key_key
  	)
ORDER BY
	t1.key_count DESC
Und falls etwas damit nicht gleich funktioniert, versuch mal zuerst den Fehler selber zu finden, bevor du dich wieder meldest.
__________________
Gruss
H2O
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre 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


PHP News

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni

Wissensbestand in Unternehmen
Wissensbestand in UnternehmenLebenslanges Lernen und Weiterbilden sichert Wissensbestand in Unternehmen

25.05.2018 | Berni


 

Aktuelle PHP Scripte

PHP Server Monitor

PHP Server Monitor ist ein Skript, das prüft, ob Ihre Websites und Server betriebsbereit sind.

11.09.2018 Berni | Kategorie: PHP/ Security
PHP WEB STATISTIK ansehen PHP WEB STATISTIK

Die PHP Web Statistik bietet Ihnen ein einfach zu konfigurierendes Script zur Aufzeichnung und grafischen und textuellen Auswertung der Besuchern Ihrer Webseite. Folgende zeitlichen Module sind verfügbar: Jahr, Monat, Tag, Wochentag, Stunde Folgende son

28.08.2018 phpwebstat | Kategorie: PHP/ Counter
Affilinator - Affilinet XML Produktlisten Skript

Die Affilinator Affilinet XML Edition ist ein vollautomatisches Skript zum einlesen und darstellen der Affili.net (Partnerprogramm Netzwerk) Produktlisten und Produktdaten. Im Grunde gibt der Webmaster seine Affilinet PartnerID ein und hat dann unmittelb

27.08.2018 freefrank@ | Kategorie: PHP/ Partnerprogramme
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 18:14 Uhr.