• 26.08.2025, 23:19
  • Register
  • Login
  • You are not logged in.

 

multisaft

Senior Member

mysql select problem

Tuesday, May 1st 2012, 12:49am

Hallo zusammen,

ich hätte mal für geschultes Personal eine Trivialfrage zu mySQL Select.


Problem: Ich habe ein Forum X und eine HP Y. Auf der HP will ich die 5 aktuellsten Threads (Erstellungspostings) angezeigt bekommen welche im Forum in einem bestimmten Board erstellt wurden. die Antworten auf den Thread sollen aber ignorriert werden.

Hierzu mal die Auszüge aus der DB die mir sinnvoll erscheinen:



Die Tabellen heißen smf_v2_messages und smf_v2_topics. In der ersten wird der Inhalt des Postings gespeichert, in der 2ten sehe ich wieviele Threads eröffnet wurden. In meinem Verständnis muss ich also beides so miteinander verknüpfen das ich in meinem Fall genau 4 Threads ausgegeben bekomme.


Hier mein Code:

Source code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
<?php

$sql = "SELECT 
			m.id_msg,
			m.id_board,
			m.subject,
			m.body 
			t.id_first_msg
		FROM smf_v2_messages AS m
		JOIN smf_v2_topics AS t
		ON m.id_board=t.id_board AND m.id_msg=t.id_first_msg
		
		WHERE m.id_board='11'";
//		ORDER BY id_msg DESC LIMIT 10";
 
$db_erg = mysql_query( $sql );
if ( ! $db_erg )
{
  die('Fehler: ' . mysql_error());
}

echo '<table border="0">';
while ($zeile = mysql_fetch_array( $db_erg, MYSQL_ASSOC))
{
  echo "<tr>";
  echo "<td>". $zeile['subject'] . "</td>";
  echo "</tr>";
  echo "<tr>";
  echo "<td>". $zeile['body'] . "</td>";
  echo "</tr>";
}
echo "</table>";
 
mysql_free_result( $db_erg );
mysql_close( $db_link );
?>


Leider bekomme ich aber Folgende Ausgabe:
Test 1
Zugeh�riger Text zu Test 1
Test 1
Zugeh�riger Text zu Test 1
Test 1
Zugeh�riger Text zu Test 1
Test 1
Zugeh�riger Text zu Test 1
Test 2
Zugeh�riger Text zu Test 2
Test 2
Zugeh�riger Text zu Test 2
Test 2
Zugeh�riger Text zu Test 2
Test 2
Zugeh�riger Text zu Test 2
Test 3
Zugeh�riger Text zu Test 3
Test 3
Zugeh�riger Text zu Test 3
Test 3
Zugeh�riger Text zu Test 3
Test 3
Zugeh�riger Text zu Test 3
Test 4
Zugeh�riger Text zu Test 4
Test 4
Zugeh�riger Text zu Test 4
Test 4
Zugeh�riger Text zu Test 4
Test 4
Zugeh�riger Text zu Test 4
Re: Test 4
Antwort auf Test 4
Re: Test 4
Antwort auf Test 4
Re: Test 4
Antwort auf Test 4
Re: Test 4
Antwort auf Test 4
Re: Test 4
Antwort auf Test 4 die 2te
Re: Test 4
Antwort auf Test 4 die 2te
Re: Test 4
Antwort auf Test 4 die 2te
Re: Test 4
Antwort auf Test 4 die 2te
Re: Test 2
Antwort auf Test 2
Re: Test 2
Antwort auf Test 2
Re: Test 2
Antwort auf Test 2
Re: Test 2
Antwort auf Test 2

Ich sehe also das jeder Thread genau 4 mal ausgegeben wird. Wieso das denn!?!? Ebenfalls werden mir auch noch die Antworten auf die eröffnungspostings ausgegeben. Das ist mir aber klar, das habe ich auch noch nicht ausgeschlossen. Darum würde ich mich kümmern (versuchen) wenn ich wenigstens nur die 4 Themen angezeigt werden... Irgendwie muss ich noch zusätzlich die id_msg und die id_first_msg verknüpfen.


Hat hier jemand ne idee?

This post has been edited 3 times, last edit by "multisaft" (May 1st 2012, 1:01am)

multisaft

Senior Member

Tuesday, May 1st 2012, 1:00am

OMG... 15 Minuten später hab ichs selber rausgefunden ^^
Gut das ich den threat geschrieben habe, so bin ich selber auf die Lösung gekommen:

Source code

1
2
3
4
5
6
7
8
9
10
11
12
$sql = "SELECT 
			m.id_msg,
			m.id_board,
			m.subject,
			m.body, 
			t.id_first_msg
		FROM smf_v2_messages AS m
		JOIN smf_v2_topics AS t
		ON m.id_board=t.id_board AND m.id_msg=t.id_first_msg
		
		WHERE m.id_board='11'
		ORDER BY m.id_msg DESC LIMIT 5";

Similar threads