SQL Abfrage aus Tabelle übersichtlich nach Position

MisterMi

Erfahrenes Mitglied
PHP:
<?php

error_reporting(E_ALL | E_STRICT);
ini_set('display_errors', TRUE);
session_start();
echo '<h2>Willkommen '.$_SESSION['user'].'</h2>';

//Verbindung herstellen
$db = mysql_connect("xxx.de.mysql", "xxx_de", "xxx") or die ("Keine Verbindung möglich: ".mysql_error());
mysql_select_db("xxx_de",$db) or die ("Keine Verbindung möglich: ".mysql_error());

    mysql_select_db('mirkolinho_de', $db)
            OR die ('Keine Verbindung möglich: ' . mysql_error());

    $sql="SELECT spielerid FROM kader WHERE username = '" .mysql_real_escape_string($_SESSION["user"]) ."'";

    $db_erg = mysql_query($sql);

if ( ! $db_erg )
{
  die('Ungültige Abfrage: ' . mysql_error());
}

echo '<table border="1">';
while ($zeile = mysql_fetch_array( $db_erg, MYSQL_ASSOC))
{
  echo "<tr>";

  echo "<td>". $zeile['spielerid'] . "</td>";
  echo "</tr>";
}
echo "</table>";

mysql_free_result( $db_erg );


    //Verbindung beenden
    mysql_close($db);
?>

So funktioniert das schon einmal in einer Tabelle... um es nach Positionen zu sortieren brauch ich wohl noch eine Spalte in der Tabelle...

Wie sehe dann die Abfrage aus, wenn es den Aufbau username (Username), spielerid (Spielername), position (Position)
hätte bzw. ich die Position in einer zweiten Tabelle hätte mit spielerid, position und ich dann sozusagen den usernamen und spielerid aus der einen tabelle und die position aus der anderen nehmen würde?

Wäre dann ja quasi in Wort:

Echo "Torwart";
Anzeigen where username = user und position = tor
Echo "Abwehr";
ANzeigen where username = user and position = abwehr

...

Danke
 
Irgendwie unklar was du jetzt in welcher Tabelle haben willst

Mach doch bitte ein Datenbeispiel mit Tabellen. So in der Art:
Das hab ich:
Code:
Tabelle mitarbeiter
id | firma_id | name
--------------------
1  | 1        | MA1
2  | 1        | MA2
3  | 2        | MA3

Tabelle Firma
id | name
---------------------
1  | firma1
2  | firma2

Nun will ich wissen, welche Firma wieviele Mitarbeiter hat. Das soll dann so aussehen
Code:
firma_id | firma_name | anzahl_mitarbeiter
------------------------------------------
1        | firma1     | 2
2        | firma3     | 1
 
Tabelle kader
username | spielerid |
--------------------
mustermann | neuer
mustermann | lahm
mustermann | ribery
mustermann | robben
mustermann | Müller

Tabelle spieler
id | name | position
1 | robben | mittelfeld
2 | ribery | mittelfeld
3 | Müller | sturm
4 | neuer | tor
5 | lahm | abwehr

Nun möchte ich gern eine Ausgabe haben welche Spieler "mustermann" hat und das sortiert nach Position, so dass am Ende rauskommt

User "Mustermann"

Spielerkader!
Tor:
neuer
Abwehr:
lahm
Mittelfeld:
Ribery
Robben
Sturm:
Müller
 
Da sich die Textbezeichnungen nicht in der Reihenfolge sortieren lassen wie du es haben willst, müsstest du sie in Zahlen umwandeln die sich dann sortieren lassen. Also zum Beispiel Tor = 0, Abwehr = 1, Mittelfeld = 2 usw.

SQL:
ORDER BY (
CASE position
    WHEN 'Tor' THEN 0
    WHEN 'Abwehr' THEN 1
    WHEN 'Mittelfeld' THEN 2
    WHEN 'Sturm' THEN 3
END)
 
Nein ich glaube das wurde falsch verstanden:

Ich brauche mehrere SQL Befehle

User "Mustermann"

Spielerkader! (Steht immer dort mit echo...)
Tor: (Steht immer dort mit echo...)
neuer (wird mit einem SQL Befehl gefüllt der alle Spieler vom User X anzeigt mit Position Tor)
Abwehr: (Steht immer dort mit echo...)
lahm (wird mit einem SQL Befehl gefüllt der alle Spieler vom User X anzeigt mit Position Abwehr)
Mittelfeld: (Steht immer dort mit echo...)
Ribery (wird mit einem SQL Befehl gefüllt der alle Spieler vom User X anzeigt mit Position Mittelfeld)
Robben
Sturm: (Steht immer dort mit echo...)
Müller (wird mit einem SQL Befehl gefüllt der alle Spieler vom User X anzeigt mit Position Sturm)

Also 4 SQL befehle... mit daten aus 2 tabellen zusammengemischt...
 
Ganz einfach vier separate SQLs:

SQL:
SELECT
  s.name
FROM
  spieler s
WHERE
  s.position = 'tor' AND s.name IN (SELECT spielerid FROM kader WHERE username = 'mustermann' )

Wenn du magst kannst du das aber auch mit einem Join lösen.
Und dann das selbe für jede weitere Position.
PS: sind die beiden Tabellen wirklich über den Namen verbunden? Was ist, wenn du plötzlich 2 Spieler mit dem selben Namen hast?-> In Kader solltest du stattdessen die ID abspeichern, also 1, 2, 3 und so.
 
Zuletzt bearbeitet von einem Moderator:
Zurück