php.de

Zurück   php.de > Webentwicklung > Datenbanken

Datenbanken SQL und Co

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 03.05.2005, 14:53  
Gast
 
Beiträge: n/a
Standard [Erledigt] ORDER BY bei zusammengesetzten Abfragen

Hallo!

Ich hab ein Problem bei einem Query:

Code:
1. query:
$result=$db->query("SELECT * FROM gegnerplan".$oby);

2. query:
$result2=$db->query("SELECT g.*,u.*,a.* FROM gegner AS g, users AS u, allianzen AS a WHERE g.gegnerid='".$row['gegnerid']."' AND a.allianzid=g.allianzid AND u.userid=".$row['scanfrom']."".$oby2);
$oby und $oby2 sind je nach sortierung leer, oder beinhalten:

ORDER BY irgendwas.

jetzt kommt das Problem. wenn ich nach Namen sortieren will, geht es nicht. $oby ist leer und $oby2 = " ORDER BY g.gegnername ASC".
Wie kann ich nach diesem Feld sortieren?
  Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 03.05.2005, 15:21  
Erfahrener Benutzer
 
Registriert seit: 29.10.2004
Beiträge: 1.781
derHund
Standard

hallo,

einerseits möchte ich dir JOIN empfehlen, um beide queries zu kombinieren.
andererseits, wenn ich mir
Code:
FROM gegnerplan".$oby
anschauen, möchte ich dir http://de.wikipedia.org/wiki/Normali...28Datenbank%29
empfehlen.

ganz interessant wäre auch zu wissen, was in $oby steht
__________________
derHund ist offline   Mit Zitat antworten
Alt 03.05.2005, 15:39  
Gast
 
Beiträge: n/a
Standard

Zitat:
$oby ist leer und $oby2 = " ORDER BY g.gegnername ASC"
:wink:

es wird eine List ausgegeben, wo die Überschriften gleich "sortierlinks" sind. Klicke ich z.B. auf Koordinaten wird die Site neu geladen mit dem parameter ...?sort=x

im php-code wird nachgeschaut, nach was sortiert wird und entweder der $oby oder dem $oby2 (je nach dem, in welchem Query sortiert werden soll) der wert =" ORDER BY ".$_REQUEST['sort']." ASC"; zugewiesen.

ich post am besten mal meinen Code.

Code:
<?PHP
session_name("cxid");
session_start();
$sid=session_id();

if (!isset($_SESSION['userid']))
{
	header("LOCATION: index.htm");
	exit();
}

if(isset($_REQUEST['action']))
{ $action=$_REQUEST['action'];
}else{ $action="main";}

if(isset($_REQUEST['sort']))
{
	if ($_REQUEST['sort']=="gegnername")
	{
		$oby2=" ORDER BY g.gegnername ASC"; //DET FUNTZT NEDDE *grml*
	}else{
		$oby=" ORDER BY ".$_REQUEST['sort']." ASC";
	}
}

require ("./lib/db_conn.php");

if ($action==main)
{
$result=$db->query("SELECT * FROM gegnerplan".$oby);
}

...
...
hier sind noch weitere if ($action==)
...
while ($row=$db->fetch_array($result))
{
	if ($t2 != 1)
	{
	$result2=$db->query("SELECT g.*,u.*,a.* FROM gegner AS g, users AS u, allianzen AS a WHERE g.gegnerid='".$row['gegnerid']."' AND a.allianzid=g.allianzid AND u.userid=".$row['scanfrom']."".$oby2);
	$gegner=$db->fetch_array($result2);
	}else{
	$result2=$db->query("SELECT * from allianzen where allianzid=".$_REQUEST['allianzid']);
	$gegner=$db->fetch_array($result2);
	$gegner['gegnername']=$row['gegnername'];
	}

	$lastscan= date("H:i:m d.m.Y",$row['lastscan']);

	$tooltip= "\"Hyperraumantrieb: ".$gegner['hyperraum']."|Impulstriebwerk: ".$gegner['impuls']."|Triebwerktechnik: ".$gegner['triebwerk']."\"";
	$planeten .= "<tr>
					<td width=\"10%\" title= $tooltip>".$gegner['gegnername']."</td>
					<td width=\"8%\">".$row['planname']."</td>
					<td width=\"8%\">".$gegner['allianzname']."</td>
					<td width=\"12%\">".$row['x'].":".$row['y'].":".$row['z']."</td>
					<td width=\"10%\">".$lastscan."</td>
					<td width=\"10%\">".$gegner['username']."</td>
					<td width=\"8%\"><a href=\"enterup.php?action=editgegner&id=".$row['id']."\">[edit]</a></td><td width=\"10%\"><a href=\"enterup.php?action=delgegnerplan&id=".$row['id']."\">[del]</a></td>
				</tr>";
}


?>

im HTML:

...
...
...
<tr>
      <td width="20%" rowspan=2>Name</td>
      <td width="8%" rowspan=2>Planet</td>
      <td width="8%"rowspan=2>Allianz</td>
      <td width="12%"rowspan=2>Koordinaten</td>
      <td width="8%" align="center" colspan="2">eingetragen </td>
      <td width="8%" rowspan=2></td>
      <tr>
      <td width="4%" align="center">am</td>
      <td width="4%" align="center">von</td>
    </tr>
    <?PHP
    echo $planeten;
    ?>

...
...
hoffe, ich hab jetzt alles ^^

-edit-
aso, vieleicht noch die DB

allianzen: allianzid | allianzname
gegner: gegnerid | gegnername | allianzid | hyperraum | triebwerk | impuls
gegnerplan: id | x | y | z | lastscan | scanfrom | planname | gegnerid
users: userid | username | pw

(in scanfrom steht die userid)
  Mit Zitat antworten
Alt 03.05.2005, 16:50  
Erfahrener Benutzer
 
Registriert seit: 29.10.2004
Beiträge: 1.781
derHund
Standard

Zitat:
Wink
es ging mir nicht um den inhalt an sich, sondern darum, was rein formal drinne steht. weißt?
__________________
derHund ist offline   Mit Zitat antworten
Alt 03.05.2005, 20:22  
Gast
 
Beiträge: n/a
Standard

Ok, dann mal sry ^^

aber das sollte ja jetzt geklärt sein. In den Variablen steht drin, wenn sortiert werden soll, nach was sortiert werden soll. Sonst sind Sie einfach leer bzw. werden nicht definiert.

Hast du eine Lösung für mein Problem?
  Mit Zitat antworten
Alt 04.05.2005, 09:39  
Erfahrener Benutzer
 
Benutzerbild von lazydog
 
Registriert seit: 02.04.2008
Beiträge: 4.032
lazydog befindet sich auf einem aufstrebenden Ast
Standard

Stell mal deine Abfragen in eine Variable und lass sie ausgeben. Ausserdem kenne ich deine query-Methode nicht, aber ich hoffe, darin wird auch mysql_error() abgefragt
PHP-Code:
<?php
...
   if (
$t2 != 1)
   {
        
$sql "SELECT g.feld1, g.feld2, g...., u.feldA, u.feldB, u....,  a.... 
                   FROM gegner AS g, users AS u, allianzen AS a 
                   WHERE g.gegnerid = '" 
$row['gegnerid'] . "' 
                   AND a.allianzid = g.allianzid 
                   AND u.userid = " 
$row['scanfrom'] . $oby2;
       echo 
"$sql
"
;       // Ausgabe zu Testzwecken
       
$result2 $db->query($sql);
       
$gegner $db->fetch_array($result2);
   }
   else{
       
$sql "SELECT feld1, feld2, ...
                  FROM allianzen
                  WHERE allianzid = " 
$_REQUEST['allianzid'];
       echo 
"$sql
"
;       // Ausgabe zu Testzwecken
       
$result2 $db->query();
       
$gegner $db->fetch_array($result2);
       
$gegner['gegnername'] = $row['gegnername'];
   } 
...
?>
Grundsätzlich würde ich mich aber dem Beitrag des Hundes anschliessen und das Ganze mit einer Abfrage zu lösen versuchen.
__________________
Gruss
L
lazydog ist offline   Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Abfrage mit count, order by, group by...und Probleme BartTheDevil89 Datenbanken 2 15.06.2008 13:34
PDO und parallele Abfragen Normalo PHP Tipps 2008 1 09.06.2008 12:39
ORDER BY im Subquery cycap Datenbanken 12 31.10.2007 20:31
PHP bzw. mysql abfragen optimieren Kori Datenbanken 3 26.09.2007 21:02
Abfrage = "SELECT * FROM links ORDER BY id" Taktaky PHP Tipps 2008 2 22.08.2007 14:37
minuszahl speichern und order by abfragen? BartTheDevil89 Datenbanken 4 19.12.2006 19:42
mysql_query verschmelzen zweier abfragen (while schleife) Buschdieb PHP Tipps 2006 10 15.07.2006 17:11
Problem mit Ausgabe bzw. Abfrage mit ORDER BY mayer Datenbanken 7 02.07.2006 21:45
mehrere Abfragen (Selects) verbinden???? CIMM Datenbanken 15 03.05.2006 18:59
order by erweiterung . frage zum verst�ndnis... Promaetheus Datenbanken 5 07.12.2005 14:26
UPDATE und ORDER BY Datenbanken 1 13.05.2005 01:09
SELECT tbl.col AS a ORDER BY tbl.a versionsabhängig? axo Datenbanken 3 15.04.2005 15:50
Syntaxfehler, wohin kommt ORDER BY PHP Tipps 2005 7 12.02.2005 13:21
[Erledigt] Abfragen, aber wie? Datenbanken 4 27.01.2005 20:21
DISTINCT oder ORDER BY unknownsoul Datenbanken 5 20.08.2004 12:12

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
zusammengesetzte abfrage, zusammengesetzte abfragen, g sql order, order by je nach, nach zusammengesetztem ergebnis sortieren sql, php db query() order by

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




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.