GrusommeGabriel Skrevet 21. mai 2009 Del Skrevet 21. mai 2009 (endret) Hei jeg lurte på ossen jeg får valgt den valuen i mysql databasen jeg har $brus_add = mysql_query("SELECT solgt FROM `1`"); men den funker ikke... Endret 21. mai 2009 av GrusommeGabriel Lenke til kommentar
GeirGrusom Skrevet 21. mai 2009 Del Skrevet 21. mai 2009 (endret) Du har feil i SQL syntaksen din, og dessuten må du lese hvordan mysql_query fungerer. Skal du hente ut verdien hvor ID = 1 så skriver du noe lignende dette: SELECT DISTINCTROW solgt FROM tabell_navn WHERE ID = 1 Endret 21. mai 2009 av GeirGrusom Lenke til kommentar
siDDis Skrevet 22. mai 2009 Del Skrevet 22. mai 2009 DISTINCT bør som regel ikkje brukas, då bør du heller sjå over databasedesignet eller spørringa di ein gong til. Lenke til kommentar
duckers Skrevet 22. mai 2009 Del Skrevet 22. mai 2009 Ut av nysgjerrighet, noen grunn til at DISTINCT ikke burde brukes? Enig i at det ikke burde være nødvendig hvis designet er godt, men ser likevel situasjoner der det kan være fornuftig. Lenke til kommentar
kaffenils Skrevet 22. mai 2009 Del Skrevet 22. mai 2009 Ut av nysgjerrighet, noen grunn til at DISTINCT ikke burde brukes? Enig i at det ikke burde være nødvendig hvis designet er godt, men ser likevel situasjoner der det kan være fornuftig.Mange (inkludert siddis) har misforstått grunnen til at en ofte bør unngå distinct. Det har som regel ingenting med database design å gjøre, men med ytelse på spørringer. Enkelte spørringer kan yte bedre om man bruker en [NOT] EXISTS subquery i stedet for en DISTINCT. Lenke til kommentar
siDDis Skrevet 22. mai 2009 Del Skrevet 22. mai 2009 Det har med database design å gjere då mange designer databaser som bruker duplikater i hutt og pine og *løyser* dette med å bruke DISTINCT Lenke til kommentar
kaffenils Skrevet 22. mai 2009 Del Skrevet 22. mai 2009 Det har med database design å gjere då mange designer databaser som bruker duplikater i hutt og pine og *løyser* dette med å bruke DISTINCTDet KAN ha med databasedesign å gjøre, men det er feil å sette likhetstegn mellom DISTINCT og feil databasedesign. Lenke til kommentar
siDDis Skrevet 22. mai 2009 Del Skrevet 22. mai 2009 Då er meg og mine kollegaer svært ueinig med din påstand Lenke til kommentar
GeirGrusom Skrevet 22. mai 2009 Del Skrevet 22. mai 2009 I dette tilfellet spiller det strengt tatt ikke noen rolle om det står der eller ikke. Er det en funksjon i PHP lignende ExecuteScalar? Lenke til kommentar
kaffenils Skrevet 22. mai 2009 Del Skrevet 22. mai 2009 (endret) Då er meg og mine kollegaer svært ueinig med din påstand Og det har dere lov å være Jeg vil allikevel påstå at bruk av DISTINCT har sjeldent med dårlig databasedesign å gjøre, og mest med spørringen å gjøre. Eksempel: Tabell 'Employee' (pseudo SQL): EmployeeId int PK Name varchar(50) ManagerId int null (FK references EmployeeId) Oppgave: Finn alle ansatte som har noen under seg i organisasjonen. Svaralternativ 1 ved å bruke EXISTS: select e.* from Employee e where exists(select * from Employee m where m.ManagerId=e.EmployeeId) Svaralternativ 2 ved å bruke DISTINCT: select distinct e.* from Employee e inner join Employee m on m.ManagerId=e.EmployeeId Er databasedesignet dårlig bare fordi jeg kan løse oppgaven ved å bruke DISTINCT? Den eneste ulempen ved å bruke DISTINCT her er sannsynligvis ytelsen, selv om moderne DBMS vil sannsynligvis velge samme execution plan for begge disse spørringene. Ordet er ditt/deres... edit: og hvis vi ikke blir enige (dvs. at jeg har rett) så får vi møtes utenfor Snadderbua på Sola for et oppgjør edit 2: byttet om tittel for svaralternativ 1 og 2. Endret 22. mai 2009 av kaffenils Lenke til kommentar
siDDis Skrevet 22. mai 2009 Del Skrevet 22. mai 2009 Det der er ikkje dårleg databasedesign! Ta heller dette eksempelet: Tabell document id int PK name varchar document_type varchar Tabellen har 100000000 rader, nå skal du hente ut alle typene(uten duplikater) Då er det klart at det lønner seg å redesigne databasen. Lenke til kommentar
kaffenils Skrevet 22. mai 2009 Del Skrevet 22. mai 2009 Helt enig med deg i det eksempelet ditt sIDDIs. Det jeg er uenig i er at bruk av distinct i spørringer ofte er resultat av dårlig databasedesign. Ta eksempelet ditt med dokument_type, men la oss for ordens skyld flytte document_type ut i en egen tabell, og heller ha en FK kolonne av type int i document tabellen. Oppgaven med å finne ut hvilke dokumenttyper som er brukt kan løses med DISTINCT, men vil sannsynligvis være mye mer effektiv ved å SELECT fra dokumenttype tabellen og bruke EXISTS med subquery mot dokumenttabell. Om man velger å bruke DISTINCT eller EXISTS for å løse oppgaven så er det ikke databasemodellen det er noe galt med, derimot er det ressurskrevende å bruke DISTINCT. Konklusjon: Bruk av DISTINCT skyldes som regel IKKE dårlig databasemodell, men dårlig forståelse av hva som skjer under panseret hos DBMSet. Lenke til kommentar
blackbrrd Skrevet 24. mai 2009 Del Skrevet 24. mai 2009 Konklusjonen er ihvertfall at hvis du må bruke DISTINCT for å få en spørring til å returnere de dataene du vil, så burde du gjøre følgende: - Sjekk om spørringen kan løses bedre med [NOT] EXISTS - Sjekk om det kan lønne seg å redesigne databasen Hvis du har mye data i databasen fra før av og kun skal skrive en ny spørring kan du sjekke hvor lang tid spørringen tar å kjøre før du gjør noen av disse sjekkene. Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå