• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

DISTINCT und überhaupt

Status
Für weitere Antworten geschlossen.

Voodoo

Mitglied
Nabend,

in meiner Verzweiflung wende ich mich schließlich an euch ;)

Also, ich habe 2 Tabellen:

Tabelle 1
Code:
--------------
| id | title |
--------------
|  1 | Bla   |
|  2 | Bla2  |
Tabelle 2
Code:
-----------------------------------
| id | fid | date   | title       |
-----------------------------------
|  1 |  1  | 143456 | Hier und so |
|  2 |  1  | 435868 | Bdlllaaa    |
|  3 |  2  | 322455 | ... Aja     |
|  4 |  2  | 012343 | Hmpfa!      |
Ich benötige jetzt für jede Tabelle1.id einen Datensatz aus Tabelle 2 mit dem höchsten Wert im Feld date.

Optimal wäre also folgendes Ergebnis:
Code:
-----------------------------------
| id | fid | date   | title       |
-----------------------------------
|  2 |  1  | 435868 | Bdlllaaa    |
|  3 |  2  | 322455 | ... Aja     |
Ich komme einfach auf keine passende Idee.
Hat jemand evtl. einen Lösungsansatz?

Hoffende Grüße
Voodoo
 
Werbung:
Sorry, aber kann noch nicht ganz folgen, du brauchst aus der Spalte id der Tabelle 1 einen höheren Wert der Tabelle 2?

MfG Marcel
 
Ah... sorry. Ganz vergessen. Tabelle1.id und Tabelle2.fid sind verknüpft. Oder sollten es bei der Abfrage werden.
Und jetzt suche ich für jede id der Tabelle1 EINEN Datensatz aus Tabelle2, der im Vergleich zu anderen Datensätzen in Tabelle 2 mit der gleichen fid, den höchsten Wert im Feld date hat.
 
Werbung:
Also halt erstmal Datenbank verbindung herstellen!

Tabelle 2
PHP:
<?php
$sql = "SELECT date FROM Tabelle2";
$result = mysql_query($sql);
$row = mysql_fetch_object($result);
echo max($row->date);
Damit hättest du die größte Zahl der Tabelle 2 (theoretisch)

MfG Marcel
 
Werbung:
Jaja, aber ich suche zu jeder id der Tabelle1 den Datensatz aus den verknüpften Datensätzen der Tabelle 2, der den höchsten Wert in date hat. Also bei 2 IDs in Tabelle 1 sollte ich im Ergebnis auch 2 Datensätze haben.
 
Sorry, ganz ehrlich gesagt, kenne ich mich mit verknüpfung in der hinsicht nicht aus! Aber vielleicht hab ich dir trotzdem irgendwie helfen können.

MfG Marcel
 
JOINs z.b.

Code:
SELECT argument FROM tabelle1, tabelle2.argument INNER JOIN tabelle2 ON tabelle1.primärschlüssel = tabelle2.fremdschlüssel

so z.b. aus tabelle1 muss nur noch der zugehörige schlüssel von tabelle2 gleichgesetzt werden. sowas nennt man referenzielle integrität.

Nils aka XraYSoLo
 
Werbung:
Danke für deine Antwort Xray, an JOINs hatte ich auch schon gedacht.
Allerdings habe ich so leider nachher immernoch alle anderen Datensätze aus Tabelle2 - nicht nur die, die den höchsten Wert in date haben.
Ich bräuchte quasi etwas, das immer nur einen bestimmten Datensatz aus Tabelle 2 mit dem aus Tabelle1 verbindet.
 
Hi!

Code:
SELECT * FROM
    (SELECT fid, MAX(date) AS maxdate FROM beta GROUP BY fid) maxquery,
    beta
WHERE beta.fid = maxquery.fid AND beta.date = maxquery.maxdate
Zuerst werden alle höchsten date-Werte gesucht. Dann werden alle Date-Werte mit dem höchsten verglichen. alpha ist Tabelle1 und beta Tabelle2.

Grüße, Eric
 
Werbung:
Status
Für weitere Antworten geschlossen.
Zurück
Oben