SQL / Datenbanken Probleme mit SQL? Hier könnt ihr eure Fragen zu SQL (MySQL, PostgreSQL, MS-SQL und andere ANSI-SQL Server) los werden. |
 |

08-03-2004, 15:28
|
TheTiggA
Newbie
|
|
Registriert seit: Mar 2004
Ort: Viersen
Beiträge: 12
|
|
[MySQL 3.23.X] Tabellenverknüpfung
Hallo zusammen.
Ich weiss es gibt einen thread mit Erklärungen zu joins, aber leider ist nichts passendes dabei..
Ich habe 2 Tabellen
file und file_rev
Felder:
file -> name, description, size
file_rev -> name, date, rev
Datenbeispiel.
file -> abc.tar.gz, Beschreibung, 1234
file_rev -> abc.tar.gz, 07.03.04, 0.1
file_rev -> abc.tar.gz, 08.03.04, 0.2
Ich möchte nun über eine SQL abfrage folgendes Resultat erhalten.
abc.tar.gz, Beschreibung, 1234, 0.2 <- NEUSTE Revision (anhand des Datums)
max(date) habe ich nirgendwo sinnvoll unterbringen können.
Kann mir da jemand helfen ?
|

08-03-2004, 20:48
|
TobiaZ
 Moderator
|
|
Registriert seit: Jan 2001
Ort: MUC und MGL, Germany
Beiträge: 34.421
|
|
order by
|

09-03-2004, 09:49
|
TheTiggA
Newbie
|
|
Registriert seit: Mar 2004
Ort: Viersen
Beiträge: 12
|
|
SELECT f.name, f.description, f.size, r.rev
FROM `file` AS f, `file_rev` AS r
WHERE f.name = r.name
ORDER BY r.rev DESC
LIMIT 0 , 1
Is scho in Ordnung aber nur für einen Datensatz.
in den tabellen stehen mehrere zeilen, und ich brauch alle Daten in einem result.
|

09-03-2004, 09:51
|
wahsaga
 Moderator
|
|
Registriert seit: Sep 2001
Beiträge: 25.236
|
|
Zitat:
Original geschrieben von TheTiggA
Is scho in Ordnung aber nur für einen Datensatz.
|
sollte dich nicht allzu sehr verwundern, wenn du LIMIT 0 , 1 mit reinschreibst.
__________________
I don't believe in rebirth. Actually, I never did in my whole lives.
|

09-03-2004, 10:29
|
TheTiggA
Newbie
|
|
Registriert seit: Mar 2004
Ort: Viersen
Beiträge: 12
|
|
Verwundert mich auch nicht. Ich sagte ja, für einen Datensatz ok.
Wenn ich Limit rauslasse stehen alte Revisionen mit in dem Result und die kann ich nichtz gebrauchen....
|

09-03-2004, 10:38
|
mrhappiness
PHP Guru
|
|
Registriert seit: Oct 2002
Beiträge: 14.890
|
|
Code:
SELECT
f.*, r.*
FROM
file f
INNER JOIN file_ref r ON f.name = r.name
LEFT JOIN file_ref r_dummy
ON
r.name = r_dummy.name
AND
r.date < r_dummy.date
WHERE
r_dummy.name IS NULL
probier das mal
__________________
Ich denke, also bin ich. - Einige sind trotzdem...
|

09-03-2004, 11:32
|
TheTiggA
Newbie
|
|
Registriert seit: Mar 2004
Ort: Viersen
Beiträge: 12
|
|
Das sieht brauchbar aus, danke
(jetz sollte ich das nur noch verstehen)
|

09-03-2004, 11:40
|
mrhappiness
PHP Guru
|
|
Registriert seit: Oct 2002
Beiträge: 14.890
|
|
wo hängt's denn?
__________________
Ich denke, also bin ich. - Einige sind trotzdem...
|

09-03-2004, 17:57
|
TobiaZ
 Moderator
|
|
Registriert seit: Jan 2001
Ort: MUC und MGL, Germany
Beiträge: 34.421
|
|
dafür gibts ja das manual.
BTW: order by macht nicht mehr als der name sagt
|

10-03-2004, 10:03
|
TheTiggA
Newbie
|
|
Registriert seit: Mar 2004
Ort: Viersen
Beiträge: 12
|
|
Ich verstehe den Syntax schon, nur weiß ich nichts mit dem dummy anzufangen.
|

10-03-2004, 10:15
|
mrhappiness
PHP Guru
|
|
Registriert seit: Oct 2002
Beiträge: 14.890
|
|
du willst ja aus der tabelle file_ref den höchsten eintrag je name, daher den left join mit name
r.date < r_dummy.date sucht dir die eintrage aus file_ref, zu denen es ein größeres datum gibt, gibt es kein größeres wird durch den left join für r_dummy NULL geliefert
das anschließende WHERE r_dummy.name IS NULL schränkt das ergebnis dann wieder auf eben diese größten werte ein
__________________
Ich denke, also bin ich. - Einige sind trotzdem...
|

10-03-2004, 10:32
|
TheTiggA
Newbie
|
|
Registriert seit: Mar 2004
Ort: Viersen
Beiträge: 12
|
|
*klick*
Jetz hats gefunkt... Danke !!!
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
Themen-Optionen |
|
Thema bewerten |
|
Forumregeln
|
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.
HTML-Code ist aus.
|
|
|
|
PHP News
|