xamunrax
Erfahrenes Mitglied
Hallo,
ich befasse mich immer sehr ungern mit den JOINS da sie in der Anwendung doch meist sehr komplex sind, jedoch sparen sie enorm in der Zeit also muss man sich ja damit beschäftigen
Nun gut meine Frage lautet ob ich bei folgender Aufgabenstellung um zwei Query´s herum komme und sie doch eher in ein Query Packe, welches meine Stammtabelle mittels SELF JOIN zwei mal aufruft.
Aufgabenstellung:
In einer Forenübersicht sollen die einzelnen Hauptforen (im Beispiel: alle mit der board_sub_id 0) mit dazu passenden unterforen (jeweils die board_sub_id = board_id) aufgelistet werden.
Aktuell löse ich das mit zwei Query´s (erstes erstellt eine Schleife in der wiederum eine neue Abfrage erstellt wird die wiederum durch eine Schleife dargestellt wird).
Meine Frage lautet, ist es mögliche sich das zweite Query zu sparen und es durch ein Query mit hilfe von SELF JOIN zu ersetzen.
Tabelle:
mein aktueller PHP-Code:
(Bitte ignoriert die MySQL-Classe mit der ich arbeite, ich denke aber vom Sinn her ist es trotzdem verständlich.
ich befasse mich immer sehr ungern mit den JOINS da sie in der Anwendung doch meist sehr komplex sind, jedoch sparen sie enorm in der Zeit also muss man sich ja damit beschäftigen
Nun gut meine Frage lautet ob ich bei folgender Aufgabenstellung um zwei Query´s herum komme und sie doch eher in ein Query Packe, welches meine Stammtabelle mittels SELF JOIN zwei mal aufruft.
Aufgabenstellung:
In einer Forenübersicht sollen die einzelnen Hauptforen (im Beispiel: alle mit der board_sub_id 0) mit dazu passenden unterforen (jeweils die board_sub_id = board_id) aufgelistet werden.
Aktuell löse ich das mit zwei Query´s (erstes erstellt eine Schleife in der wiederum eine neue Abfrage erstellt wird die wiederum durch eine Schleife dargestellt wird).
Meine Frage lautet, ist es mögliche sich das zweite Query zu sparen und es durch ein Query mit hilfe von SELF JOIN zu ersetzen.
Tabelle:
Code:
board_id board_name board_description board_icon board_sub_id
+----------+------------+-------------------+------------+--------------+
| 1 | Test1 | BlaBlaBlaBla | ICON 5 | 0 |
+----------+------------+-------------------+------------+--------------+
| 2 | Test2 | BlaBlaBlaBla | ICON 5 | 0 |
+----------+------------+-------------------+------------+--------------+
| 3 | Test1_1 | BlaBlaBlaBla | ICON 5 | 1 |
+----------+------------+-------------------+------------+--------------+
| 4 | Test1_2 | BlaBlaBlaBla | ICON 5 | 1 |
+----------+------------+-------------------+------------+--------------+
| 5 | Test1_3 | BlaBlaBlaBla | ICON 5 | 1 |
+----------+------------+-------------------+------------+--------------+
| 6 | Test3 | BlaBlaBlaBla | ICON 5 | 0 |
+----------+------------+-------------------+------------+--------------+
| 7 | Test2_1 | BlaBlaBlaBla | ICON 5 | 2 |
+----------+------------+-------------------+------------+--------------+
| 8 | Test4 | BlaBlaBlaBla | ICON 5 | 0 |
+----------+------------+-------------------+------------+--------------+
mein aktueller PHP-Code:
(Bitte ignoriert die MySQL-Classe mit der ich arbeite, ich denke aber vom Sinn her ist es trotzdem verständlich.
PHP:
$db_board->query("SELECT board_name, board_description, board_icon, board_id FROM ".DB_BOARDS." WHERE board_level >= '".$_SESSION['user_lvl']."' AND board_sub_id = '".$_GET['bid']."' ORDER BY board_sort");
for ($i=0; $i < $db_board->num_rows; $i++) {
$db_board->next_record();
$db_sboard->query("SELECT board_id, board_name, board_sub_id FROM ".DB_BOARDS." WHERE board_sub_id = '".$db_board->f('board_id')."' AND board_level >= '".$_SESSION['user_lvl']."' LIMIT 4");
if($db_sboard->num_rows()>0){
for ($i=0; $i < ; $i++) {
$db_sboard->next_record();
$tmp_sub_boards[] = array('SUBBOARD_NAME' => $db_sboard->f('asd'), 'SUBBOARD_LINK' => GCMS_LINK('board&bid='.$db_sboard->f('board_id')));
}
}
if(strlen($db_board->f('board_description'))>111){ $tmp_text = substr($db_board->f('board_description'),0,111).'...'; }
$tmp_icon = '<img src="img/board/'.$db_board->f('board_icon').'" width="125" height="122" alt="'.$db_board->f('board_name').'" />';
$tmp_boards[] = array( 'BOARD_ID' => $db_board->f('board_id')),
'BOARD_NAME' => $db_board->f('board_name'),
'BOARD_ICON' => $tmp_icon,
'BOARD_DESCRIPTION' => $tmp_text);
}