Warnung: file_put_contents(/home/www/web1/html/php_dev/test.txt) [function.file-put-contents]: failed to open stream: Permission denied in /home/www/web1/html/php_dev/sys/lib.activity.php (Zeile 58)
Problem mit dem abfragen mehrer Tabellen (JOINS) [Archiv] - PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr
ebiz-webhosting
- Ad -
php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
Problem mit dem abfragen mehrer Tabellen (JOINS)


 
cali-mero
14-07-2010, 19:27 
 
Hallo miteinander,

ich hab ein problem mit dem abfragen mehrer Tabellen (JOINS). Ich hab über
euer Tutorial "MySQL für Anfänger einfach erklärt" herausgefunden wie das
mit dem JOINS funktioniert (wenn ich mit der userid suche funktioniert es
auch nur nicht wenn ich die userid suche).

Zur Erklärung:
Ich hab 4 Tabellen users, statusdr, statuset und statuspi

in der Tabelle users stehen die: userid, uservname, usernname, usw....
in der Tabelle statusdr stehen die: statusid, status, fuserid, usw...
die Tabellen statuset und statuspi sind genau wie die Tabelle statusdr
aufgebaut. Der Status in den 3 Tabellen besteht aus einer Zahl 1 bis 5.
Jeder Benutzer kann nur jeweils in einem Status sein.

Wenn ich nun mit den userid's suche bekomme ich ein Ergebniss das fast stimmt
es werden auch Benutzer angezeigt die keinen Status haben:
SELECT *
FROM users
LEFT JOIN statusdr ON users.userid=statusdr.fuserid
LEFT JOIN statuset ON users.userid=statuset.fuserid
LEFT JOIN statuspi ON users.userid=statuspi.fuseridNun hätte ich gern eine Liste in der von oben nach unten alle Statuse
aufgeführt sind und unter dem jeweiligen Status die Benutzer stehen:

Status 1
Benutzer 12
Benutzer 16

Status 2
Benutzer 1
Benutzer 2

Status 3

Status 4

Status 5
Benutzer 5

und hier komm ich nicht mehr weiter.

thanx schon mal jetzt für eure hilfe

MFG
cali-mero

 
AmicaNoctis
14-07-2010, 21:31 
 
Hallo,

bekomme ich ein Ergebniss das fast stimmt
es werden auch Benutzer angezeigt die keinen Status haben

Wenn dich das stört, nimm einen inner Join (ohne left, also nur „JOIN“).

Nun hätte ich gern eine Liste in der von oben nach unten alle Statuse
aufgeführt sind und unter dem jeweiligen Status die Benutzer stehen

Sowas gibt es nicht, aber das kannst du dann mit PHP zurechtbasteln. Dieses Vorgehen nennt man Gruppenwechsel.

Gruß,

Amica

 
cali-mero
19-07-2010, 21:29 
 
Hallo,

danke für den Tipp ich habs jetzt so gelöst:

<?php

require("./config.inc.php");


$sql = "TRUNCATE TABLE `tmp`";
mysql_db_query($dbname, $sql);

$sql = "INSERT INTO tmp (statusid, userid)\n"
. "SELECT fstatusid, fuserid FROM statusdr\n"
. "WHERE statusdr.fstatusid > 0";
mysql_db_query($dbname, $sql);

$sql = "INSERT INTO tmp (statusid, userid)\n"
. "SELECT fstatusid, fuserid FROM statuset\n"
. "WHERE statuset.fstatusid > 0";
mysql_db_query($dbname, $sql);

$sql = "INSERT INTO tmp (statusid, userid)\n"
. "SELECT fstatusid, fuserid FROM statuspi\n"
. "WHERE statuspi.fstatusid > 0\n";
mysql_db_query($dbname, $sql);

$sql = "SELECT tmp.statusid, tmp.userid, user.firstname, user.lastname\n"
. "FROM tmp\n"
. "LEFT JOIN user ON tmp.userid=user.userid\n"
. "ORDER BY tmp.statusid LIMIT 0, 30 ";



$resultat = mysql_db_query($dbname, $sql);

while ($row = mysql_fetch_array($resultat)) {
extract($row);

echo "
<table border=1 width=200px>
<tr>
<td>Status $statusid</td>
<tr></tr>
</tr>

<tr>
<tr><br></tr>

<td>$firstname $lastname</td>
</tr>
";

}

echo "</table>";
?>das Script ist mit sicherheit nicht ganz perfekt so erfüllt aber seinen
Zweck.

MFG
cali-mero

 
eagle275
19-07-2010, 21:42 
 
bist du sicher, dass du das

echo "<table blabla>" IN der letzten while-Schleife haben willst ... das sieht viel "hübscher" davor aus ^^

- -

Alle Zeitangaben in WEZ +2. Es ist jetzt 17:11 Uhr.