anpera.net
https://anpera.homeip.net/phpbb3/

2mal "LEFT JOINT accounts" in SQL-Abfrage
https://anpera.homeip.net/phpbb3/viewtopic.php?f=34&t=2124
Seite 1 von 1

Autor:  Darkness [ So 15 Jan, 2006 14:56 ]
Betreff des Beitrags:  2mal "LEFT JOINT accounts" in SQL-Abfrage

Also, mit
$this->bbcode_second_pass_code('', 'SELECT gilden.*, accounts.name AS leadername FROM gilden INNER JOIN accounts ON accounts.acctid=gilden.leader')
kann ich alles aus der gildentabelle und den Namen des Anführers laden.

Mit
$this->bbcode_second_pass_code('', 'SELECT gilden.*, count(accounts.acctid) AS members FROM gilden LEFT JOIN accounts ON accounts.gilde=gilden.id GROUP BY gilden.id')
kann ich alles aus der GIldentablle und die Anzahl der MItglieder laden.


Jetzt meine Frage, is es möglich beides in einer sql-Abfrage zu schreiben, oder muss ich eine von beiden asuführen und die andere information mit $this->bbcode_second_pass_code('', 'SELECT count(acctid) AS members FROM accounts WHERE gilde='{ID der Gilde}'') laden.

Autor:  Kevz [ So 15 Jan, 2006 15:08 ]
Betreff des Beitrags: 

Sorry, aber ich versteh ehrlich nicht gesagt genau wo dein Prob darin besteht. Schreibe einmal die Tabellen auf die du abfragen möchtest. Dann ist es wesentlich einfacher

Autor:  Chaosmaker [ So 15 Jan, 2006 15:17 ]
Betreff des Beitrags: 

$this->bbcode_second_pass_code('', 'SELECT gilden.*, a1.name AS leadername, count(a2.acctid) AS members
FROM gilden
LEFT JOIN accounts a1 ON a1.acctid=gilden.leader
LEFT JOIN accounts a2 ON a2.gilde=gilden.id
GROUP BY gilden.id
')
Ich würde aber dringend empfehlen, das ganze entsprechend Deinem Vorschlag in zwei Abfragen zu unterteilen, da ein GROUP BY immer erst nach der Abfrage ausgeführt wird und somit Unmengen überflüssiger Daten gelesen würden, was im Endeffekt weitaus langsamer ist.

Autor:  Darkness [ So 15 Jan, 2006 15:39 ]
Betreff des Beitrags: 

Chaosmaker hat geschrieben:
$this->bbcode_second_pass_code('', 'SELECT gilden.*, a1.name AS leadername, count(a2.acctid) AS members
FROM gilden
LEFT JOIN accounts a1 ON a1.acctid=gilden.leader
LEFT JOIN accounts a2 ON a2.gilde=gilden.id
GROUP BY gilden.id
')
Ich würde aber dringend empfehlen, das ganze entsprechend Deinem Vorschlag in zwei Abfragen zu unterteilen, da ein GROUP BY immer erst nach der Abfrage ausgeführt wird und somit Unmengen überflüssiger Daten gelesen würden, was im Endeffekt weitaus langsamer ist.


Hm.. ok, danke^^
dann lass ichs wohl so, wenn so schenller ist.

Seite 1 von 1 Alle Zeiten sind UTC + 1 Stunde
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/