Nej det går inte att få ihop, inte hos mig i alla fall.
Vad har du för tabellinnehåll och vad vill du ha för resultat?
9 svar · 237 visningar · startad av JAreMANNEN
Undrar hur man sääter ihop en SQL-sträng som använder distinct på ETT fält...
typ något sånt här.. ;)
select id, namn, (distinct ingredienser), pris from pizzor
Så att pizzan kan ha likadana namn men INTE likadana ingredienser...
Tycker att det borde gå att få ihop det på nåt sätt!
THX!
Nej det går inte att få ihop, inte hos mig i alla fall.
Vad har du för tabellinnehåll och vad vill du ha för resultat?
tabellstruktur:
id | nr | namn | innehall | pris
Såhär ser det ut just nu...
sql = "SELECT distinct innehall, id FROM restaurangpizzor ORDER BY innehall"
set rsPizza = databas.execute(sql)
if rsPizza.EOF then
response.Write ("Hittade inget")
else
do until rsPizza.EOF
sql = " select nr, namn, pris, avhpris from RestaurangPizzor where Id = "& rsPizza("id")
set rs2 = databas.execute(sql)
response.write ("namn: "& rs("namn") &"<br>innehåll: "& rsPizza("innehall") &"<br><br>")
rsPizza.movenext
loop
end if
Som det är nu så kan jag ju (som jag tänker iaf) _INTE_ sortera efter Namn, eftersom den ligger i Innehåll loopen...
Och då blir det hela lite knasigt, för jag vill ju sortera efter pizzornas namn och inte innehållet
Hoppas du förstår det hela nu.. :)
För att sortera ut dubletter i ett fält kan du använda GROUP BY.
T.ex. select id, namn, ingredienser, pris from pizzor group by ingredienser
hrm, får felmess....
fattar ingenting utav det så jag ber om lite hjälp här.. ;)
SELECT id, nr, namn, innehall, pris, avhpris FROM restaurangpizzor group by innehall ORDER BY namn
genererar följande fel:
Microsoft OLE DB Provider for ODBC Drivers (0x80040E14)
[Microsoft][ODBC SQL Server Driver][SQL Server]Column 'restaurangpizzor.Id' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause.
Visa lite datainnehåll och förklara :
Vad är duplikat?
Om det finns duplikat, hur vill du välja bland de andra kolumnerna?
Jag förstår inte vad du vill ha för resultat.
OK, here we go!
datainnehåll i DB:
id | nr | namn | innehall | pris | avhpris
---------------------------------------
1 | 24 | Ciao Ciao | Tomat, ost, skinka, fläskfilé, vitlök, champinjoner | 65 | 62
2 | 12 | Ciao Ciao | Tomat, ost, skinka, fläskfilé, vitlök, champinjoner | 70 | 65
3 | 49 | Ciao Ciao | Tomat, ost, skinka, fläskfilé, vitlök | 60 | 50
Detta är tre poster ur databasen, alla tre har _samma_ namn, två av dom har likadant innehåll i pizzan.
Utav detta vill jag få ut TVÅ poster med namnet "Ciao Ciao".
Eftersom att innehållet på två utav dom tre är samma så ska den "räknas" som en, därav min fråga kring distinct (läs första inlägget). Det är altså innehall som är duplikat...
Räcker detta eller behöver du ha mer information?
Vad är det för skillnad mellan 1 och 2? Det som är oklart är vilken av dessa poster som man skall hämta och du måste definera vilka villkor man skall använda. Det är den information jag är ute efter. T.ex så kan du ta den post där id är lägst
select * from restaurangpizzor
where id in (select min(id) from restaurangpizzor
group by namn,innehall)
skillnaden mellan 1 och 2 är dess id-nummer, eftersom dom hör till två olika pizzerior.
jag behöver alla fält i uthämtningen, innehållet i pizzan får _inte_ vara lika... :)
Det går inte ihop. Hur skulle resultatmängden se ut i detta fall? En kolumn i en resultatmängd kan enbart innehålla ett värde.
Är du ute efter att få
1,2 | 24,12 | Ciao Ciao | Tomat, ost, skinka, fläskfilé, vitlök, champinjoner | 65,70 | 62,65
3 | 49 | Ciao Ciao | Tomat, ost, skinka, fläskfilé, vitlök | 60 | 50
?