Query sortiert nicht richtig. Join mit 2 Tabellen

Sag mal willst Du uns hier vereimern? :mad:

Jetzt sortierst Du plötzlich nach Nachnamen?

Und diese Abfrage hast Du im Script per echo ausgeben lassen? Dann stellst Du im Script irgendwas mit dem Ergebnis an.

PS.: Und auf Deiner Seite ist im Ergebnis gerade gar nichts zu sehen...
 
Falsche Zwischenablage. Sorry.

nein, ich will euch nicht vereimern! (!)


// Edit:

Also folgenden PHP-Teil habe ich
PHP:
$b_query		=	'SELECT
									*,
									AVG(`vote_wert`) AS `votings`,
									COUNT(`vote_id`) AS `gesamt`
								FROM
									benutzer b
								LEFT JOIN
									benutzer_voting bv
								ON
									b.benutzer_id = bv.vote_benutzer_id
								WHERE
									b.benutzer_id = "'.$benutzer_id.'"
								GROUP BY
									b.benutzer_id
								ORDER BY
									AVG(`vote_wert`) DESC';
			$b_result		=	mysql_query($b_query) or die(mysql_error());
			$b_select		=	mysql_fetch_assoc($b_result);

			
			$benutzer[]		= $b_select;


Und im template gebe ich es folgendermaßen aus:
HTML:
<?php foreach($benutzer as $benutzer) { ?>
<?php echo $benutzer['benutzer_vorname']; ?> <br />
<?php } ?>
 
Zuletzt bearbeitet:
Hier ist die Ausgabe von <pre><?php echo print_r($benutzer); ?></pre>

Array
(
[0] => Array
(
[benutzer_id] => 1
[benutzer_aktiv] => 1
[benutzer_status] => 0
[benutzer_passwort] => 1e8d326d9fd88749217e74b621a85abcbea3e92a
[benutzer_geburtstag] =>
[benutzer_anrede] => Herr
[benutzer_titel] =>
[benutzer_namenszusatz] =>
[benutzer_vorname] => David
[benutzer_nachname] => Flögel
[benutzer_geschlecht] => 0
[benutzer_strasse] => asd
[benutzer_hausnummer] => 12
[benutzer_plz] => 0
[benutzer_wohnort] => 12
[benutzer_bundesland] => BY
[benutzer_land] =>
[benutzer_telefon] =>
[benutzer_dienst_telefon] =>
[benutzer_handy] =>
[benutzer_fax] =>
[benutzer_email] => david@ifloegel.de
[benutzer_homepage] =>
[benutzer_verweise] =>
[benutzer_beruf] =>
[benutzer_taetigkeit] =>
[benutzer_info] =>
[benutzer_interessen] =>
[benutzer_treffen] => 0
[benutzer_werbung] => 0
[benutzer_exkontakt] => 1
[benutzer_registriert] => 1250536754
[vote_id] => 1
[vote_benutzer_id] => 1
[vote_wert] => 4
[vote_kommentar] =>
[vote_neukunde] => 0
[vote_ip] =>
[vote_datum] => 0
[votings] => 3.7500
[gesamt] => 4
)

[1] => Array
(
[benutzer_id] => 2
[benutzer_aktiv] => 1
[benutzer_status] => 0
[benutzer_passwort] => 1e8d326d9fd88749217e74b621a85abcbea3e92a
[benutzer_geburtstag] =>
[benutzer_anrede] => Frau
[benutzer_titel] =>
[benutzer_namenszusatz] =>
[benutzer_vorname] => Margarete
[benutzer_nachname] => Mustermann
[benutzer_geschlecht] => 0
[benutzer_strasse] => kasdsad
[benutzer_hausnummer] => 12
[benutzer_plz] => 123123
[benutzer_wohnort] => ghjklö
[benutzer_bundesland] => HE
[benutzer_land] =>
[benutzer_telefon] =>
[benutzer_dienst_telefon] =>
[benutzer_handy] =>
[benutzer_fax] =>
[benutzer_email] => margarete.mustermann@gmx.de
[benutzer_homepage] =>
[benutzer_verweise] =>
[benutzer_beruf] =>
[benutzer_taetigkeit] =>
[benutzer_info] =>
[benutzer_interessen] =>
[benutzer_treffen] => 0
[benutzer_werbung] => 0
[benutzer_exkontakt] => 1
[benutzer_registriert] => 1250536790
[vote_id] => 5
[vote_benutzer_id] => 2
[vote_wert] => 2
[vote_kommentar] =>
[vote_neukunde] => 0
[vote_ip] =>
[vote_datum] => 0
[votings] => 10.4667
[gesamt] => 15
)

)
 
Hi,

machst Du etwa in einer Schleife für jede BenutzerID (wo auch immer Du die dann her hast) eine eigene Abfrage (für die die Sortierung dann natürlich für'n Fuss ist, kommt ja eh nur ein Datensatz raus...)? :suspekt:

LG
 
:rolleyes: Schlimm sind offene Beine...

Datenbankabfragen innerhalb einer Schleife sind unperformant, in der Regel ein Zeichen dafür, dass dem Programmierer grundlegende SQL-Kenntnisse fehlen (was bei Erstellung von Kundenprojekten nun wirklich nicht der Fall sein sollte) und im Falle Deiner gewünschten Sortierung doch sowieso völliger Käse. Du sortierst einzeln Abfragen, die sowieso nur einen Datensatz liefern. Wie kommst Du jetzt darauf, dass das Array $benutzer nach etwas anderem sortiert sein sollte, als der Reihenfolge, in dem du Elemente reingeschrieben hast?

Mach eine Abfrage, die alle Datensätze liefert, dann klappt's auch mit der Sortierung.

LG
 
Ja sorry :-(


Also ich hab das Problem, dass ich nicht wusste wie ich sonst umsetzen soll.

Die komplette Abfrage der Suche, nach Thema, Erreichbarkeit die dazu gehört, und/oder Benutzerdaten sieht so aus:

PHP:
// daten
	$plz		= $_POST['plz'];
	$wohnort	= $_POST['wohnort'];
	$bundesland	= $_POST['bundesland'];
	$land		= $_POST['land'];
	$beruf		= $_POST['beruf'];
	$taetigkeit	= $_POST['taetigkeit'];
	$sonstiges	= $_POST['sonstiges'];
	$nachname	= $_POST['nachname'];
	$vorname	= $_POST['vorname'];
	$sonstiges	= $_POST['sonstiges'];
	$telefon	= $_POST['telefon'];
	
	// es wird nach thema gesucht
	// erreichbarkeiten werden NICHT ignoriert
	$tag		= $_POST['tag'];
	$von		= $_POST['von'];
	$bis		= $_POST['bis'];

	// timestamp generieren
	$von_mk		= mktime($von, 0, 0, 0, 0, 0);
	$bis_mk		= mktime($bis, 0, 0, 0, 0, 0);
	
	if($ignoretimes != 0) {
		if(!empty($searchfor)) {		
			$query		=	'SELECT
								*
							FROM
								benutzer b
							LEFT JOIN
								ex_themen e
							ON
								e.thema_benutzer_id = b.benutzer_id
							LEFT JOIN
								ex_erreichbar ee
							ON
								e.thema_id	= ee.erreich_wgruppe
							WHERE
								ee.erreich_tag <= "'.$tag.'" && ee.erreich_btag >= "'.$tag.'"
							AND
								ee.erreich_von <= "'.$von_mk.'" && ee.erreich_bis >= "'.$bis_mk.'"
							AND 
								e.thema_beschreibung LIKE "%'.$searchfor.'%" 
							AND ';	
		} else {
			$query		=	'SELECT
								*
							FROM
								benutzer
							WHERE';
		}
	} else {
		if(!empty($searchfor)) {		
			$query		=	'SELECT
								*
							FROM
								benutzer b
							LEFT JOIN
								ex_themen e
							ON
								e.thema_benutzer_id = b.benutzer_id
							WHERE 
								e.thema_beschreibung LIKE "%'.$searchfor.'%" 
							AND ';	
		} else {
			$query		=	'SELECT
								*
							FROM
								benutzer
							WHERE';
		}
	}


	if(!empty($plz)) {
		$query	.= '`benutzer_plz` LIKE "%'.$plz.'%" OR ';
	}
	if(!empty($wohnort)) {
		$query	.= '`benutzer_wohnort` LIKE "%'.$wohnort.'%" OR ';
	}
	if(!empty($bundesland)) {
		$query	.= '`benutzer_bundesland` LIKE "%'.$bundesland.'%" OR';
		$query	.= '`benutzer_land` LIKE "%'.$bundesland.'%" OR';
	}
	if(!empty($beruf)) {
		$query	.= '`benutzer_beruf` LIKE "%'.$beruf.'%" OR';
	}
	if(!empty($taetigkeit)) {
		$query	.= '`benutzer_taetigkeit` LIKE "%'.$taetigkeit.'%" OR';
	}
	if(!empty($sonstiges)) {
		$query	.= '`benutzer_info` LIKE "%'.$sonstiges.'%" OR';
	}
	if(!empty($nachname)) {
		$query	.= '`benutzer_nachname` LIKE "%'.$nachname.'%" OR';
	}
	if(!empty($vorname)) {
		$query	.= '`benutzer_vorname` LIKE "%'.$vorname.'%" OR';
	}
	if(!empty($telefon)) {
		$query	.= '`benutzer_telefon` LIKE "%'.$telefon.'%" OR';
		$query	.= '`benutzer_dienst_telefon` LIKE "%'.$telefon.'%" OR';
		$query	.= '`benutzer_handy` LIKE "%'.$telefon.'%" OR';
	}
	
	
	if(substr($query, -4, 4) == 'AND ') {
		$query      = substr($query, 0, -4); 
	} else {
		$query      = substr($query, 0, -3); 
	}
	$result		=	mysql_query($query) or die(mysql_error());
	$count		=	mysql_num_rows($result);

	// daten auslesen
	if($count > 0) {
		$benutzer	  = array();
		while($select = mysql_fetch_array($result))
		{
			if($searchin == 1) {
				$benutzer_id	= $select['thema_benutzer_id'];
			} else {
				$benutzer_id	= $select['benutzer_id'];
			}
		
			// countings zählen
			#$count = mysql_query(mysql_num_rows(('SELECT * FROM benutezr_voting WHERE `vote_benutzer_id` = "'.$benutzer_id.'"'));
			$b_query		=	'SELECT
									*,
									AVG(`vote_wert`) AS `votings`,
									COUNT(`vote_id`) AS `gesamt`
								FROM
									benutzer b
								LEFT JOIN
									benutzer_voting bv
								ON
									b.benutzer_id = bv.vote_benutzer_id
								WHERE
									b.benutzer_id = "'.$benutzer_id.'"
								GROUP BY
									b.benutzer_id
								ORDER BY
									AVG(`vote_wert`) DESC';
			$b_result		=	@mysql_query($b_query) or die(mysql_error());
			$b_select		=	@mysql_fetch_assoc($b_result);

			
			$benutzer[]		= $b_select;
		}
	}



Wenn ihr mir helfen könntest, dass neu, gut umzusetzen wär ich sehr dankbar!
 
Hi,

Also ich hab das Problem, dass ich nicht wusste wie ich sonst umsetzen soll.

wie Du was genau umsetzen sollst? Ich habe ehrlich gesagt wenig Lust, mich durch dieses Script zu wühlen, um herauszufinden, was genau Du da übst. Abgesehen davon, dass das hier das Datenbankforum ist und ein PHP-Script hier nichts zu suchen hat.

Formulier erst mal, was Du überhaupt aus der Datenbank abfragen willst und versuche, das in eine Abfrage zu giessen. Wenn's dann ein Problem gibt, postest Du hier Deine Tabellenstrukturen, Beispieldaten, die Abfrage, was Du erwartet hast und was stattdessen herausgekommen ist. Und zwar alles ohne PHP oder dessen Ausgabe, sondern erstmal nur SQL in z.B. PHPMyAdmin getestet. Auf das blinde Gestocher hier habe ich keine Lust mehr.

LG
 
Zurück