Hallo Tutorials.de,
Kann mir jemand helfen die ersten beiden Abfragen des folgenden Codes als eine Abfrage zusammenzufassen?
Folgender Code tut was er soll (Alle Strahlenkreise User und Positionen bestimmen um neue Str-Intensität festzuelegen) und ist hoffe ich ausreichenden kommentiert. Leider tue ich mich mit Joins dieser Grössenordnung so schwer das ich nichtmal weiss wo ich anfangen sollte.
Würde mich freuen wenn ihr mir nen Stück weit weiter helfen könnt oder andre Tipps habt.
Gruss Joe.
Kann mir jemand helfen die ersten beiden Abfragen des folgenden Codes als eine Abfrage zusammenzufassen?
Folgender Code tut was er soll (Alle Strahlenkreise User und Positionen bestimmen um neue Str-Intensität festzuelegen) und ist hoffe ich ausreichenden kommentiert. Leider tue ich mich mit Joins dieser Grössenordnung so schwer das ich nichtmal weiss wo ich anfangen sollte.
PHP:
//// Strahlenbelastung wenn User im Feld steht
// Alle User und Positionen holen
$sql = "SELECT
Username,
MoveX,
MoveY
FROM
User
WHERE
MoveX!=NULL";
$result = mysql_query($sql);
if (!$result) {
die ('Etwas stimmte mit dem Query nicht: '.$db->error);
}
while ($row = mysql_fetch_assoc($result)) {
$Usern[]=$row["Username"];
$MoveX[]=$row["MoveX"];
$MoveY[]=$row["MoveY"];
}
// für jeden User prüfen ob er im Strahlenfeld steht
for ($i=0; $i<count($Usern); $i++) {
// DB-Abfrage ob Position des User innerhalb des Strahlungskreises
$getStrahlung2 = "
SELECT
Radius,
MPX,
MPY,
Intensity,
SQRT(
POW($MoveX[$i] - `MPX`,2) +
POW($MoveY[$i] - `MPY`,2))
AS distance
FROM
Strahlung
HAVING
distance < Radius
ORDER BY distance";
$Strahlung2 = mysql_query($getStrahlung2);
if (mysql_errno()) {
echo mysql_errno() . ": " . mysql_error(). "\n";
}
if (!$Strahlung2) {
die ('Etwas stimmte mit dem Query nicht: '.$db->error);
}
// User steht in einem oder mehren Strahlenkreisen
if(mysql_num_rows($Strahlung2)!= 0) {
// höchste Intensität ermitteln
unset($IntensityMap2);
while ($row = mysql_fetch_assoc($Strahlung2)) {
$IntensityMap2[]=$row["Intensity"];
}
if (1<count($IntensityMap2)) {
for ($t=0; $t<count($IntensityMap2); $t++) {
if (!$val OR $val<$IntensityMap2[$t]) {
$val = $IntensityMap2[$t];
}
}
}
else {
$val = $IntensityMap2[0];
}
$getStrahlung4 = "
SELECT
*
FROM
Strahlenbelastung
WHERE
Username= '$Usern[$i]'";
$Strahlung4 = mysql_query($getStrahlung4);
if (mysql_errno()) {
echo mysql_errno() . ": " . mysql_error(). "\n";
}
while ($row = mysql_fetch_assoc($Strahlung4)) {
$RADLvl2=$row["RADLvl"];
}
if ($RADLvl2<$val) {
// Mache Radupddate
mysql_query("UPDATE
Strahlenbelastung
SET
RADLvl='$val'
Where
Username= '$Usern[$i]'");
if (mysql_errno()) {
echo mysql_errno() . "222: " . mysql_error(). "\n";
}
if (mysql_affected_rows() == 0) {
mysql_query("INSERT INTO
Strahlenbelastung
(Username,
RADLvl)
VALUES
('$Usern[$i]','$val')");
if (mysql_errno()) {
echo mysql_errno() . "1: " . mysql_error(). "\n";
}
}
}
}
}
Würde mich freuen wenn ihr mir nen Stück weit weiter helfen könnt oder andre Tipps habt.
Gruss Joe.