Archiv verlassen und diese Seite im Standarddesign anzeigen : tabellen planung/überlegung (help!)
Frashier 17-10-2006, 22:01 hi leute,
ich habe folgendes:
tabelle 1
id
start (datetime)
end (datetime)
tabelle 2
id
id_tabelle1
name
vorname
content
in tabelle 1 wird eingetragen wann informationen zu sehen/online sind (vielleicht dort lieber mit timestamp arrbeiten?) und in tabelle 2 sind die informationen gespeichert, unterschiedlich viele, verknüpft mit tabelle 1 (id_tabelle1)!
ich möchte nun die höchste/letzte id aus tabelle 1 auslesen welche noch nicht online ist, also currentdate noch nicht start und auch nicht ende ist.
Stichwort JOINS. Siehe auch den Sticky in diesem Forum.
Frashier 17-10-2006, 22:39 das ich die tabelle join'e ist mir klar. mal anders:
$currentdate = date("Y-m-d H:i");
$sql = "SELECT
tabelle1.id,
DATE_FORMAT(tabelle1.start, '%d.%m.%y %H:%i') AS startdate,
DATE_FORMAT(tabelle1.end, '%d.%m.%y %H:%i') AS enddate,
tabelle2.name,
tabelle2.vorname
FROM
tabelle1
LEFT JOIN
tabelle2 ON tabelle1.id = tabelle2.id_tabelle1
WHERE
tabelle1.end <= '".$currentdate."'
ORDER BY
tabelle1.id ASC, tabelle2.id ASC";
$result =mysql_query($sql);
while($row = mysql_fetch_assoc($result)) {
echo $row['name'];
echo $row['vorname'];
}
ich möchte nun folgendes auslesen. den eintrag aus tabelle1 der der letzte ist und das end (datetime) vergangen, also kleiner als das currentdate!
irgendwie stehe ich auf der leitung!
ORDER BY
tabelle1.end DESC limit 1
Frashier 18-10-2006, 00:29 Original geschrieben von Slava
ORDER BY
tabelle1.end DESC limit 1
danke fürs durchlesen, wäre aber zu einfach!
ich habe in tabelle2 mindestens 10 einträge die ich auslesen will, wenn ich es so mache bekomme ich ein wert ausgelesen.
Frashier 18-10-2006, 01:22 so hab ich es nun, kann mir das vielleicht einer in ein select schreiben?
$currentdate = date("Y-m-d H:i");
$sql = "SELECT MAX(id) AS id FROM tabelle1 WHERE end <= '".$currentdate."'";
$result = mysql_query($sql);
$row = mysql_fetch_assoc($result);
$hund = $row['id'];
$sql = "SELECT
tabelle1.id,
DATE_FORMAT(tabelle1.start, '%d.%m.%y %H:%i') AS startdate,
DATE_FORMAT(tabelle1.end, '%d.%m.%y %H:%i') AS enddate,
tabelle2.name,
tabelle2.vorname
FROM
tabelle1
LEFT JOIN
tabelle2 ON tabelle1.id = tabelle2.id_tabelle1
WHERE
tabelle1.end <= '".$currentdate."' AND tipgame.id = '".$hund."'
ORDER BY
tabelle1.id ASC, tabelle2.id ASC";
$result =mysql_query($sql);
while($row = mysql_fetch_assoc($result)) {
echo $row['name'];
echo $row['vorname'];
}
SELECT
tabelle1.id,
DATE_FORMAT(tabelle1.start, '%d.%m.%y %H:%i') AS startdate,
DATE_FORMAT(tabelle1.end, '%d.%m.%y %H:%i') AS enddate,
tabelle2.name,
tabelle2.vorname
FROM
tabelle1
LEFT JOIN
tabelle2 ON tabelle1.id = tabelle2.id_tabelle1
WHERE
tabelle1.end <= '".$currentdate."' AND tipgame.id =
(SELECT MAX(id) AS id FROM tabelle1 WHERE end <= '".$currentdate."'")
ORDER BY
tabelle1.id ASC, tabelle2.id ASC
Geht aber erst ab Mysql 4.1
Frashier 18-10-2006, 21:47 hey, danke... sowas habe ich mir auch schon angelesen funktionierte nur nicht. leider will deine abfrage hier auch nicht funktionieren, bist dir sicher das das ab mysql 4.1 funzt? ich habe v 4.1.15 und er bringt mir auch ein syntax fehler. *grummel*
mit den Subqueries bin ich sicher, siehe
Mysql-Doku (http://www.mysql.de/news-and-events/news/article_723.html)
Ich hab das gestern nur auf die schnelle zusammengestellt.
Scheint mir ein " zu viel zu sein:
$sql = "SELECT
tabelle1.id,
DATE_FORMAT(tabelle1.start, '%d.%m.%y %H:%i') AS startdate,
DATE_FORMAT(tabelle1.end, '%d.%m.%y %H:%i') AS enddate,
tabelle2.name,
tabelle2.vorname
FROM
tabelle1
LEFT JOIN
tabelle2 ON tabelle1.id = tabelle2.id_tabelle1
WHERE
tabelle1.end <= '".$currentdate."' AND tipgame.id =
(SELECT MAX(id) AS id FROM tabelle1 WHERE end <= '".$currentdate."')
ORDER BY
tabelle1.id ASC, tabelle2.id ASC";
Frashier 19-10-2006, 14:02 das " habe ich gestern schon entdeckt, geht trotzdem nicht bei meinem 4.1.15 mysql.
sehr eigenartig! ich gehe dem ganze mal weiter auf den grund, danke dir recht herzlich für deine bemühungen!
cheers frash
geht trotzdem nicht bei meinem 4.1.15 mysql.
Soll heissen? fehlermeldungen?
|
|