webForumDet fria alternativet

DISTINCT

11 svar · 647 visningar · startad av Php

PhpMedlem sedan sep. 2001225 inlägg
#1

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");

LarsGMedlem sedan dec. 200012 465 inlägg
#2

distinct är ingen funktion, det är ett attribut för hela select-listan.

Vad vill du åstadkomma?

PhpMedlem sedan sep. 2001225 inlägg
#3

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.

LarsGMedlem sedan dec. 200012 465 inlägg
#4
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
PhpMedlem sedan sep. 2001225 inlägg
#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?

LarsGMedlem sedan dec. 200012 465 inlägg
#6
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
PhpMedlem sedan sep. 2001225 inlägg
#7

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

LarsGMedlem sedan dec. 200012 465 inlägg
#8

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å.

PhpMedlem sedan sep. 2001225 inlägg
#9

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**

@ndersMedlem sedan juni 200026 914 inlägg
#10

Vad får du för felmeddelande?

PhpMedlem sedan sep. 2001225 inlägg
#11

#1052 - Column 'member_id' in field list is ambiguous

@ndersMedlem sedan juni 200026 914 inlägg
#12

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
Genererad på 385 ms · cache AV · v20260730165559-full.f96bc7eb