Jag vill välja ut poster där id-fältet i tabellen Order är unika.
SELECT *, Order.id AS rsID FROM Order INNER JOIN Car ON Order.id = Order_id
WHERE orderNr LIKE '%1234%'
Jag vill alltså ha något sånt här:
SELECT DISTINCT *, Order.id AS rsID FROM Order INNER JOIN Car ON Order.id = Order_id
WHERE orderNr LIKE '%1234%'
Men hur anger jag att det är Order.id som skall vara unikt? DISTINCT plockar ju bara ut poster där alla fält är unika?
------------------
http://www.tavlingar.se
VideMedlem sedan dec. 19998 577 inlägg SELECT DISTINCT Order.id AS rsID FROM Order INNER JOIN Car ON Order.id = Order_id
WHERE orderNr LIKE '%1234%'
------------------
Vide rox = new Vide();
rox.learn("C#");
webeye.nu
@ndersMedlem sedan juni 200032 969 inlägg har iofs svårt att tänka mig att man skulle komma undan om man har en tabell som heter order.
mer reserverat än så blir det inte.
------------------
<A HREF="http://cartman.nu" TARGET=_blank>
can i borrow your goat?
</A>
Hm. Om jag skriver så, så räcker det väl med att något fält är olikt för att jag skall selecta den posten? Jag vill ju selecta distinct med avseende på ett visst fält. Det spelar alltså ingen roll vad övriga fält är.
Tabellen heter egentligen inte order. Jag förenklade bara namnen för att det skulle vara lättare att förstå.
------------------
http://www.tavlingar.se
@ndersMedlem sedan juni 200032 969 inlägg ok. :)
vad kör du för dbms?
------------------
<A HREF="http://cartman.nu" TARGET=_blank>
can i borrow your goat?
</A>
LarsGMedlem sedan dec. 200012 464 inlägg Distinct är bara applicerbart på hela rader.
Hur skulle det annars gå ihop sig?
------------------
essentitia preter non sans multiplicandum
SQL Server 7.0
Det skulle väl kunna gå att använda DISTINCT som "Välj ut de rader där värdet i fältet [fält] är unikt"?
------------------
http://www.tavlingar.se
@ndersMedlem sedan juni 200032 969 inlägg hmm, jo, men vilken av raderna där order.id = 5 vill du ha? hur ska servern kunna bestämma sig för det?
------------------
<A HREF="http://cartman.nu" TARGET=_blank>
can i borrow your goat?
</A>
LarsGMedlem sedan dec. 200012 464 inlägg Du vill alltså ha de rader där orderid bara förekommer 1 gång i tabellen?
Det går inte att använda distinct då den bara tar bort duplikat från ett resultat.
select * from orders
where orderid in (
select orderid from orders
group by orderid
having count(*) = 1)
------------------
essentitia preter non sans multiplicandum
[Redigerat av LarsG den 27 jun 2001]
Heh, nä jag vill inte ha de rader där orderid bara förekommer en gång i tabellen.
order.id är alltså en räknare. varje order innehåller ett antal bilar. varje bil har ett värde order_id (notera underscore) som anger vilken order bilen tillhör. om jag söker på en viss bil vill jag presentera ordern som bilen tillhör.
------------------
http://www.tavlingar.se
LarsGMedlem sedan dec. 200012 464 inlägg jag förstår inte varför du måste blanda in distinct.
Distinct tar bara bort duplikat från ett resultat.
Det är kanske något sånt här du är ute efter
select * from orders
where id in (select order_id
from car
where ... )
------------------
essentitia preter non sans multiplicandum
Nej, jag vill ta bort duplikat där duplikat i detta fallet definieras som att order.id är samma.
Om jag väljer ut tre bilar och två av dem tillhör samma order, så kommer det som det är nu visas tre ordrar. Jag vill bara visa de bägge olika ordrarna.
------------------
http://www.tavlingar.se
LarsGMedlem sedan dec. 200012 464 inlägg Då borde det gå bra med den subselect som jag skrev.
------------------
essentitia preter non sans multiplicandum
Ja, iofs.. Hm, då kanske det var fel att använda INNER JOIN?
------------------
http://www.tavlingar.se
LarsGMedlem sedan dec. 200012 464 inlägg Jo.
------------------
essentitia preter non sans multiplicandum
Ja nu fungerar det ta mig sjutton. Det var imponerande. Jag hade ju helt fel från början. :l
------------------
http://www.tavlingar.se