Hallo,
ich nage nun schon zwei Tage an diesem Problem. Dafür habe ich mich mal registriert, ich hoffe hier kann mir jemand weiter helfen.
Grundsätzlich geht es um ein Script, welches Bildergalerien dem Besitzer in der Reihenfolge auflisten soll, in der diese zuletzt kommentiert wurden. Dabei werden sehr viele Tabellen abgerufen. Um es übersichtlich zu halten habe ich dazu mal ein kleines ähnliches Script mit dem selben Problem geschrieben.
Es gibt hier 2 Tabellen. Einmal 'Häuser' und einmal 'Bewohner'. Einzelnen Häuser-Einträgen sollen teilw. mehrere Bewohner-Einträge zugeordnet werden. Ich möchte nun, die Häuser inkl. ihrer Bewohner ausgeben. In der Reihenfolge, in der zuletzt jemand eingezogen ist. Also Rückwärts nach der bewohner.Id
Datenbank:
Script:
Ich habe schon alles mögliche ausprobiert. ORDER BY, GROUP BY, DISTINCT (weil ab und zu die Häuser mehrfach ausgegeben werden)... EXISTS (macht nicht viel Sinn, da auch 'leere Häuser' berücksichtigt werden sollen)
Ich wäre echt glücklich, wenn das Problem gelöst wäre!
Generell: Anfangs wollte ich das mit einem einzigen Query lösen, mit dem ich mir dann ein Multi-Array füllen wollte, um dieses schön ausgeben zu können - Leider habe ich keine Möglichkeit gefunden. Ist dies generell möglich mit MySQL?
ich nage nun schon zwei Tage an diesem Problem. Dafür habe ich mich mal registriert, ich hoffe hier kann mir jemand weiter helfen.
Grundsätzlich geht es um ein Script, welches Bildergalerien dem Besitzer in der Reihenfolge auflisten soll, in der diese zuletzt kommentiert wurden. Dabei werden sehr viele Tabellen abgerufen. Um es übersichtlich zu halten habe ich dazu mal ein kleines ähnliches Script mit dem selben Problem geschrieben.
Es gibt hier 2 Tabellen. Einmal 'Häuser' und einmal 'Bewohner'. Einzelnen Häuser-Einträgen sollen teilw. mehrere Bewohner-Einträge zugeordnet werden. Ich möchte nun, die Häuser inkl. ihrer Bewohner ausgeben. In der Reihenfolge, in der zuletzt jemand eingezogen ist. Also Rückwärts nach der bewohner.Id
Datenbank:
Code:
SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO"; -- -- Datenbank: `test` -- -- -------------------------------------------------------- -- -- Tabellenstruktur für Tabelle `bewohner` -- CREATE TABLE IF NOT EXISTS `bewohner` ( `id` int(11) NOT NULL auto_increment, `haus` int(11) NOT NULL, `name` varchar(100) NOT NULL, PRIMARY KEY (`id`), KEY `haus` (`haus`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=17 ; -- -- Daten für Tabelle `bewohner` -- INSERT INTO `bewohner` (`id`, `haus`, `name`) VALUES (1, 1, 'peter'), (2, 1, 'michaela'), (3, 2, 'frank'), (4, 7, 'torsten'), (5, 7, 'nina'), (6, 7, 'ralf'), (7, 7, 'ingeborg'), (8, 10, 'tim'), (9, 10, 'Irmgard'), (10, 3, 'Fridolin'), (11, 6, 'Marianne'), (12, 6, 'Paulus'), (13, 10, 'Bernd'), (14, 7, 'Adolf'), (15, 2, 'Lutz'), (16, 3, 'Gerhard'); -- -------------------------------------------------------- -- -- Tabellenstruktur für Tabelle `haus` -- CREATE TABLE IF NOT EXISTS `haus` ( `id` int(11) NOT NULL, `verwalter` varchar(100) NOT NULL, UNIQUE KEY `id` (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1; -- -- Daten für Tabelle `haus` -- INSERT INTO `haus` (`id`, `verwalter`) VALUES (1, 'Mueller'), (2, 'Mueller'), (3, 'Kohl'), (6, 'Mueller'), (7, 'Mueller'), (10, 'Mueller');
PHP-Code:
<?
if(!@is_numeric($_REQUEST['verwalter'])) {
$_REQUEST['verwalter'] = "Mueller";
}
$query1 = mysql_query("SELECT
haus.id,
haus.verwalter,
bewohner.id AS bId
FROM
haus
JOIN
bewohner ON (bewohner.id=haus.id)
WHERE
haus.verwalter='$_REQUEST[verwalter]'
ORDER BY
bewohner.id DESC,
haus.id DESC
LIMIT 40
") or die(mysql_error());
while ($data=mysql_fetch_array($query1)) {
print '<b>Haus: '.$data['id'].'</b> ('.$data['verwalter'].')<br>';
# print 'Name: '.$data['name'].'('.$data['id'].')<br>';
# print 'verwalter: '.$data['verwalter'].'<br>';
print '<br>';
$query2 = mysql_query("SELECT
bewohner.name,
bewohner.id
FROM
bewohner
WHERE
bewohner.haus = '$data[id]'
ORDER BY
bewohner.id DESC
") or die(mysql_error());
while($data2=mysql_fetch_array($query2)) {
print '<u>'.$data2['name'].' ('.$data2['id'].')</u><br>';
}
print '<br>-----------<br>';
}
error_reporting(E_ALL);
?>
Ich wäre echt glücklich, wenn das Problem gelöst wäre!
Generell: Anfangs wollte ich das mit einem einzigen Query lösen, mit dem ich mir dann ein Multi-Array füllen wollte, um dieses schön ausgeben zu können - Leider habe ich keine Möglichkeit gefunden. Ist dies generell möglich mit MySQL?
Kommentar