• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

order by über mehrere db-tabellen

wessei

Neues Mitglied
hallo bin jetzt dabei eine userliste zu erstellen.

die datenbankabfrage sieht im php-code mal so aus:

HTML:
<div class="content_in">
 <div class="user_liste">
  <div class="user_pn">PN</div>
  <div class="user_ni">Username</div>
  <div class="user_al">Allianz-Tag</div>
  <div class="user_pu">Punkte</div>
 </div>
<?php
        $sql = "SELECT
                     *
             FROM
                     USER
             ORDER BY
                     $anzeige_tabelle $anzeige_reihenfolge
            ";
     $result_userliste_user_all = mysql_query($sql) OR die("<pre><br>".$sql."</pre><br>".mysql_error());
  $menge_userliste_user_all = mysql_num_rows($result_userliste_user_all);
  while($row_userliste_user_all = mysql_fetch_assoc($result_userliste_user_all)) {
   $sql = "SELECT
       *
     FROM
       ALLIANZ
     WHERE
       ID = '".mysql_real_escape_string(trim($row_userliste_user_all['AllianzID']))."'
       ";
   $result_userliste_allianz_von_user = mysql_query($sql) OR die("<pre><br>".$sql."</pre><br>".mysql_error());
   $row_userliste_allianz_von_user = mysql_fetch_assoc($result_userliste_allianz_von_user);
?>
 <div class="user_liste">
  <div class="user_pn">
            <a href="#" onclick="return pn_to_open('pn_to', '<?php echo $pn_to_nickname ?>');">
                <img title="PN senden" src="./images/pn.gif" border="0" height="15px" width="15px" alt="PN senden">
            </a>
        </div>
  <div class="user_ni">
            <a href="?page=user&content=profile&uid=<?php echo htmlentities($row_userliste_user_all['ID'], ENT_QUOTES) ?>"><div class="nickname"><?php echo htmlentities($row_userliste_user_all['Nickname'], ENT_QUOTES); ?></div></a>
        </div>
  <div class="user_al"><a href="?page=allianz&content=hauptquatier&allyid=<?php echo htmlentities($row_userliste_allianz_von_user['ID'], ENT_QUOTES); ?>"><?php echo htmlentities($row_userliste_allianz_von_user['Allianzkurz'], ENT_QUOTES); ?></a></div>
  <div class="user_pu">0</div>
 </div>
<?php
  }
?>
</div>



die ausgabe sieht dan so aus:


Username | Allianz-Tag | Punkte
admin | EZ | 0
gast | DZ | 0
info | VZ | 0
moderator | ZZ | 0
wes | | 0
wessei | | 0

username zu sortieren funktioniert, aber wenn ich allianztag her nehme die über allianzid in die datenbank user gespeichert wird wird es mir nach der id sortiert sollte aber so sortiert werden: DZ, EZ, VZ, ZZ und nicht EZ(1), ZZ(2), DZ(3), VZ(4). also sollte ich damit in die tabelle allianz den allianz-tag (Allianz-kurz) auslesen und erst dan sortieren.

hat jemand eine ahnung wie ich das anstellen kann? hab schon was mit JOIN gelesen aber tscheck das ned ganz wie das funktioniert

mfg. wessei
 
Werbung:
Hallo,

also davon abgesehen das der code oben eher suboptimal ist versteh ich nicht was wie sortiert werden soll.

was soll das sein oder wie sind die werte "$anzeige_tabelle $anzeige_reihenfolge"

username zu sortieren funktioniert, aber wenn ich allianztag her nehme die über allianzid in die datenbank user gespeichert wird wird es mir nach der id sortiert
????

ORDER BY mehrer geht so
ORDER BY Spalte1, Spalte2

Cheffchen
 
meine tabelle user is so aufgebaut

ID | nickname | allianzID | userpunkte

die taballe allianz so

ID | allianzname | allianzkurz | allianzpunkte

in meiner userliste soll dan angezeigt werden

username | allianzkurz | userpunkte

soll mit:

<form name="anzeigen" action="?page=listen&content=userliste" method="post" accept-charset="ISO-8859-1">
<div class="anzeigen_tabelle">
<select class="select_anzeigen_tabelle" name="anzeige_tabelle_userliste">
<?php
foreach ($anzeige_tabelle_userliste_array as $anzeige_tabelle_foreach => $anzeige_tabelle_text){
$anzeige_tabelle_selected = ($anzeige_tabelle_foreach == $anzeige_tabelle) ? ' selected="selected"' : '';
echo "<option".$anzeige_tabelle_selected." value='".$anzeige_tabelle_foreach."'>".$anzeige_tabelle_text."</option>";
}
?>
</select>
</div>
<div class="anzeigen_sortieren">
<select class="select_anzeigen_sortieren" name="anzeige_sortieren">
<?php
foreach ($anzeige_sortieren_array as $anzeige_sortieren_foreach => $anzeige_sortieren_text){
$anzeige_sortieren_selected = ($anzeige_sortieren_foreach == $anzeige_sortieren) ? ' selected="selected"' : '';
echo "<option".$anzeige_sortieren_selected." value='".$anzeige_sortieren_foreach."'>".$anzeige_sortieren_text."</option>";
}
?>
</select>
</div>
<div class="anzeigen_menge">
<select class="select_anzeigen_menge" name="anzeigen_menge">
<?php
foreach ($anzeigen_menge_array as $anzeigen_menge_foreach => $anzeigen_menge_text){
$anzeigen_menge_selected = ($anzeigen_menge_foreach == $anzeigen_menge) ? ' selected="selected"' : '';
echo "<option".$anzeigen_menge_selected." value='".$anzeigen_menge_foreach."'>".$anzeigen_menge_text."</option>";
}
?>
</select>
</div>
<div class="anzeigen_abschicken"><input type="submit" class="submit" name="submit" value="anzeigen"></div>
</form>
wird die sortierung selbst vom user gesteuert

wenn der user keine eigene sortierung vorgenommen hat sind die standarteinstellung:
$anzeige_tabelle = "Nickname";
$anzeige_reihenfolge = "ASC";
$anzeigen_menge = "10";

nach diesen wird dan sortiert
funktionirt auch wenn ich,
$anzeige_tabelle = "Nickname";
$anzeige_reihenfolge = "DESC";
eingebe, ohne probleme.

mein problem liegt darin wenn ich dan allianzkurz auswähle dan sortiert mir mysql nach allianzID und nicht nach allianzkurz in der tabelle allianzen wie erwünscht.

kurze erläuterung:
1. , 2. funktionieren ohne probleme
die zahl in der () ist die allianzID nach der wird in 3. , 4. sortiert, möchte aber das ich mit order by nach der allianzkurz in der tabelle allianz sortiere. weis jedoch nicht wie ich es anstellen soll.
am ende sollte es so aussehen wie in 5. , 6.

1. --> order by nickname ASC:
Username | Allianzkurz | Punkte
admin | EZ(1) | 0
gast | DZ(3) | 0
info | VZ(4) | 0
moderator | ZZ(2) | 0
wes | - | 0
wessei | - | 0

2. --> order by nickname DESC:
Username | Allianzkurz | Punkte
wessei | - | 0
wes | - | 0
moderator | ZZ(2) | 0
info | VZ(4) | 0
gast | DZ(3) | 0
admin | EZ(1) | 0

3. --> order by allianzkurz ASC:
Username | Allianzkurz | Punkte
wessei | - | 0
wes | - | 0
admin | EZ(1) | 0
moderator | ZZ(2) | 0
gast | DZ(3) | 0
info | VZ(4) | 0

4. --> order by allianzkurz DESC:
Username | Allianzkurz | Punkte
info | VZ(4) | 0
gast | DZ(3) | 0
moderator | ZZ(2) | 0
admin | EZ(1) | 0
wes | - | 0
wessei | - | 0

5. --> order by allianzkurz ASC:
Username | Allianzkurz | Punkte
admin | EZ(1) | 0
gast | DZ(3) | 0
info | VZ(4) | 0
moderator | ZZ(2) | 0
wessei | - | 0
wes | - | 0

6. --> order by allianzkurz DESC:
Username | Allianzkurz | Punkte
moderator | ZZ(2) | 0
info | VZ(4) | 0
gast | DZ(3) | 0
admin | EZ(1) | 0
wes | - | 0
wessei | - | 0
 
Werbung:
Zurück
Oben