Hej,
Kan någon kolla vad är för fel på följande rad:
$query = mysql_query("SELECT title,eID,postdate(DISTINCT(member_id)) FROM book order by postdate DESC limit 5");
11 svar · 647 visningar · startad av Php
Hej,
Kan någon kolla vad är för fel på följande rad:
$query = mysql_query("SELECT title,eID,postdate(DISTINCT(member_id)) FROM book order by postdate DESC limit 5");
Jag vill skriva ut de 5 senaste posterna från en tabell, men jag vill inte skriva ut dubbleter från samma användare. Jag vill därför använda DISTINCT för fältet member_id, men jag behöver fortfarande även kunna välja (title, eID, postdate). Min fråga är alltså hur jag för att endast få DISTINCT på member_id, men fortfarande kunna välja andra fält från tabellen.
SELECT title,eID,postdate, member_id
FROM book b
where postdate = (select max(postdate)
from book
where book.member_id = b.member_id)
order by postdate DESC
limit 5
Tack Lars G, fungerar utmärkt. Om du har lika bra koll på inner join passar jag på med en följdfråga.
Jag vill skirva ut medelmmens användarnamn. Nu är det så att i denna tabell (book) så kan jag hämta ID nummer (member_id), men namnet måste jag hämta från en annan tabell, som heter "members" där fältet heter "username".
Hur skulle det se ut om vi lägger till detta?
SELECT title,eID,postdate, username
FROM book b join members m on b.member_id = m.member_id
where postdate = (select max(postdate)
from book
where book.member_id = b.member_id)
order by postdate DESC
limit 5
Tyvärr fungerar det inte riktigt när du lägger till den inner join funktionen, får följande felmeddelande:
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in
Lägg till ett anrop till mysql_error efter mysql_query så får du ut ett bättre felmeddelande. Du kan ju även testa frågan direkt i något lämpligt verktyg. Jag kan ju ha gissat fel på något kolumnnamn eller så.
Hej igen,
Nu uppstod en ny fråga. När jag använder följande sats:
SELECT title,eID,postdate, username
FROM book b join members m on b.member_id = m.member_id
where postdate = (select max(postdate)
from book
where book.member_id = b.member_id)
order by postdate DESC
limit 5
Så är problemet att den inte väljer fältet member_id från tabellen book. Jag försökte lägga till det i slutet där, men får då felmeddelande att satsen är ogiltig. SELECT title,eID,postdate, username**, member_id**
Vad får du för felmeddelande?
#1052 - Column 'member_id' in field list is ambiguous
Om du har det fältet i mer än en tabell måste du berätta vilket du vill hämta ut.
SELECT title,eID,postdate, username, [b]b.[/b]member_id