Fetstil Fetstil Kursiv Understrykning linje färgläggning tabellverk Punktlista Nummerlista Vänster Centrerat högerställt Utfyllt Länk Bild htmlmode
  • Forum & Blog
    • Forum - översikt
      • .Net
        • asp.net generellt
        • c#
        • vb.net
        • f#
        • silverlight
        • microsoft surface
        • visual studio .net
      • databaser
        • sql-server
        • databaser
        • access
        • mysql
      • mjukvara klient
        • datorer och komponenter
        • nätverk, lan/wan
        • operativsystem
        • programvaror
        • säkerhet, inställningar
        • windows server
        • allmänt
        • crystal reports
        • exchange/outlook
        • microsoft office
      • mjukvara server
        • active directory
        • biztalk
        • exchange
        • linux
        • sharepoint
        • webbservers
        • sql server
      • appar (win/mobil)
      • programspråk
        • c++
        • delphi
        • java
        • quick basic
        • visual basic
      • scripting
        • asp 3.0
        • flash actionscript
        • html css
        • javascript
        • php
        • regular expresssion
        • xml
      • spel och grafik
        • DirectX
        • Spel och grafik
      • ledning
        • Arkitektur
        • Systemutveckling
        • krav och test
        • projektledning
        • ledningsfrågor
      • vb-sektioner
        • activeX
        • windows api
        • elektronik
        • internet
        • komponenter
        • nätverk
        • operativsystem
      • övriga forum
        • arbete karriär
        • erbjuda uppdrag och tjänster
        • juridiska frågor
        • köp och sälj
        • matematik och fysik
        • intern information
        • skrivklåda
        • webb-operatörer
    • Posta inlägg i forumet
    • Chatta med andra
  • Konto
    • Medlemssida
    • Byta lösenord
    • Bli bonsumedlem
    • iMail
  • Material
    • Tips & tricks
    • Artiklar
    • Programarkiv
  • JOBB
  • Student
    • Studentlicenser
  • KONTAKT
    • Om pellesoft
    • Grundare
    • Kontakta oss
    • Annonsering
    • Partners
    • Felanmälan
  • Logga in

Hem / Forum översikt / inlägg

Posta nytt inlägg


Ännu en SQL-fråga

Postades av 2012-07-20 18:14:31 - Bo Nilsson, i forum access, Tråden har 6 Kommentarer och lästs av 2423 personer

Här kommer ännu en fråga om SQL.
Kan en fråga bli för lång?
Jag har här en SQL-sats som är rätt så lång. Skulle jag plocka bort en del av Or-satserna så fungerar det bra.

Vad är det som jag inte förstår??
Allt står rätt i min fråga även om det jag visar här kan se konstigt ut.

Min fråga ser ut så här:

SELECT * FROM Songs WHERE (Category = 'Musik') AND (Genre = 'Acapella') Or (Genre = 'Acid') Or (Genre = 'Acid Jazz') Or (Genre = 'Acid Punk') Or (Genre = 'Acoustic') Or (Genre = 'Alternative') Or (Genre = 'Alternative Rock') Or (Genre = 'Ambient') Or (Genre = 'Avantgrass') Or (Genre = 'Ballad') Or (Genre = 'Bass') Or (Genre = 'Beat') Or (Genre = 'Bebob') Or (Genre = 'Big Band') Or (Genre = 'Black Metal') Or (Genre = 'Bluegrass') Or (Genre = 'Blues') Or (Genre = 'Booty Bass') Or (Genre = 'Britpop') Or (Genre = 'Cabaret') Or (Genre = 'Celtic') Or (Genre = 'Chamber Music') Or (Genre = 'Chanson') Or (Genre = 'Chotus') Or (Genre = 'Christian Gangsta Rap') Or (Genre = 'Christian Pop') Or (Genre = 'Christian Rock') Or (Genre = 'Classic rock') Or (Genre = 'Classical') Or (Genre = 'Club') Or (Genre = 'Club-House') Or (Genre = 'Comedy') Or (Genre = 'Contemporary Christian') Or (Genre = 'Country') Or (Genre = 'Crossover') Or (Genre = 'Cult') Or (Genre = 'Dance') Or (Genre = 'Dance Hall') Or (Genre = 'Darkwave') Or (Genre = 'Death Metal') Or (Genre = 'Disco') Or (Genre = 'Dream') Or (Genre = 'Drum & Bass') Or (Genre = 'Drum Solo') Or (Genre = 'Duet') Or (Genre = 'Easy Listening') Or (Genre = 'Electronic') Or (Genre = 'Ethnic') Or (Genre = 'Eurodance') Or (Genre = 'Euro-House') Or (Genre = 'Euro-Techno') Or (Genre = 'Fast Fusion') Or (Genre = 'Folk') Or (Genre = 'Folklore') Or (Genre = 'Folk-Rock') Or (Genre = 'Freestyle') Or (Genre = 'Funk') Or (Genre = 'Fusion') Or (Genre = 'Game') Or (Genre = 'Gangsta') Or (Genre = 'Goa') Or (Genre = 'Gospel') Or (Genre = 'Gothic') Or (Genre = 'Gothic Rock') Or (Genre = 'Grunge') Or (Genre = 'Hard Rock') Or (Genre = 'Hardcore') Or (Genre = 'Heavy Metal') Or (Genre = 'Hip-Hop') Or (Genre = 'House') Or (Genre = 'Humour') Or (Genre = 'Indie') Or (Genre = 'Industrial') Or (Genre = 'Instrumental') Or (Genre = 'Instrumental Pop') Or (Genre = 'Instrumental Rock') Or (Genre = 'Jazz') Or (Genre = 'Jazz+Funk') Or (Genre = 'Jungle') Or (Genre = 'Latin') Or (Genre = 'Lo-Fi') Or (Genre = 'Meditative') Or (Genre = 'Merengue') Or (Genre = 'Metal') Or (Genre = 'Musical') Or (Genre = 'National Folk') Or (Genre = 'Native US') Or (Genre = 'Negerpunk') Or (Genre = 'New Age') Or (Genre = 'New Wave') Or (Genre = 'Noise') Or (Genre = 'Oldies') Or (Genre = 'Opera') Or (Genre = 'Other') Or (Genre = 'Polka') Or (Genre = 'Polsk Punk') Or (Genre = 'Pop') Or (Genre = 'Pop/Funk') Or (Genre = 'Pop-Folk') Or (Genre = 'Porn Groove') Or (Genre = 'Power Ballad') Or (Genre = 'Pranks') Or (Genre = 'Primus') Or (Genre = 'Progressive Rock') Or (Genre = 'Psychadelic') Or (Genre = 'Psychedelic Rock') Or (Genre = 'Punk') Or (Genre = 'Punk Rock') Or (Genre = 'R&B') Or (Genre = 'Rap') Or (Genre = 'Rave') Or (Genre = 'Reggae') Or (Genre = 'Retro') Or (Genre = 'Revival') Or (Genre = 'Rhytmic Soul') Or (Genre = 'Rock') Or (Genre = 'Rock & Roll') Or (Genre = 'Salsa') Or (Genre = 'Samba') Or (Genre = 'Satire') Or (Genre = 'Showtunes') Or (Genre = 'Ska') Or (Genre = 'Slow Jam') Or (Genre = 'Slow Rock') Or (Genre = 'Sonata') Or (Genre = 'Soul') Or (Genre = 'Sound Clip') Or (Genre = 'Soundtrack') Or (Genre = 'Southern Rock') Or (Genre = 'Space') Or (Genre = 'Speech') Or (Genre = 'Swing') Or (Genre = 'Symphonic Rock') Or (Genre = 'Symphony') Or (Genre = 'Tango') Or (Genre = 'Techno') Or (Genre = 'Techno-Industrial') Or (Genre = 'Terror') Or (Genre = 'Top 40') Or (Genre = 'Trailer') Or (Genre = 'Trance') Or (Genre = 'Trash Metal') Or (Genre = 'Tribal') Or (Genre = 'Trip-Hop') Or (Genre = 'Vocal')




Svara

Sv: Ännu en SQL-fråga

Postades av 2012-07-20 20:40:04 - Ann Kapborg

Det tror jag inte även om jag skulle skapa en tabell och göra en WHERE IN


Snabbt googlingsexempel från W3-schools

SELECT column_name(s)
FROM table_name
WHERE column_name IN (SELECT...)

Den lösningen är i mitt tycke prydligare och det finns inte någon anledning att leta igenom frågan om du behöver ändra samt att du kan eventuellt använda den till andra frågor. Du kan t.ex. ha en kolumn som talar om vilken fråga det tillhör för att göra det ännu enklare, det sistnämnda inte helt strukturerat och optimalt men fungerar i vilket fall :)

//Ann


Svara

Sv:Ännu en SQL-fråga

Postades av 2012-07-20 20:52:43 - Bo Nilsson

Tack för hjälpen.
Jag ska prova detta.
Jag är som sagt inte någon expert på SQL men jag gör så gott jag kan.
Tack.


Svara

Sv: Ännu en SQL-fråga

Postades av 2012-07-20 22:01:20 - Ann Kapborg

Det är så man lär sig, har gjort ungefär likadant. Det här fungerar och verkar bra men jag undrar jag och så lär man sig lite mer :)

//Ann


Svara

Sv: Ännu en SQL-fråga

Postades av 2012-07-21 09:53:15 - Thomas Roman

Den där frågan gör troligtvis inte så som du vill.

"...WHERE (Category = ''Musik'') AND (Genre = ''Acapella'') Or (Genre = ''Acid'') Or (Genre = ''Acid Jazz'')..."


Den plockar ut låtar som har både kategorin Musik och genre Acapella eller låtar som har bara har genre Acid eller låtar som bara har genre Acid Jazz osv. Kravet på kategorin Musik ligger endast på första genren, inte på alla som jag antar att du vill?
Det löser du i så fall genom att sätta alla genre-vilkor inom en gemensam parentes.
SELECT * FROM Songs WHERE Category = ''Musik'' AND (Genre = ''Acapella'' Or Genre = ''Acid'' Or Genre = ''Acid Jazz'' Or Genre = ''Acid Punk'' Or 
Genre = ''Acoustic'' Or Genre = ''Alternative'' Or Genre = ''Alternative Rock'' Or Genre = ''Ambient'' Or Genre = ''Avantgrass'' Or Genre = ''Ballad'' Or 
Genre = ''Bass'' Or Genre = ''Beat'' Or Genre = ''Bebob'' Or Genre = ''Big Band'' Or Genre = ''Black Metal'' Or Genre = ''Bluegrass'' Or Genre = ''Blues'' Or 
Genre = ''Booty Bass'' Or Genre = ''Britpop'' Or Genre = ''Cabaret'' Or Genre = ''Celtic'' Or Genre = ''Chamber Music'' Or Genre = ''Chanson'' Or Genre 
= ''Chotus'' Or Genre = ''Christian Gangsta Rap'' Or Genre = ''Christian Pop'' Or Genre = ''Christian Rock'' Or Genre = ''Classic rock'' Or Genre 
= ''Classical'' Or Genre = ''Club'' Or Genre = ''Club-House'' Or Genre = ''Comedy'' Or Genre = ''Contemporary Christian'' Or Genre = ''Country'' Or 
Genre = ''Crossover'' Or Genre = ''Cult'' Or Genre = ''Dance'' Or Genre = ''Dance Hall'' Or Genre = ''Darkwave'' Or Genre = ''Death Metal'' Or Genre 
= ''Disco'' Or Genre = ''Dream'' Or Genre = ''Drum & Bass'' Or Genre = ''Drum Solo'' Or Genre = ''Duet'' Or Genre = ''Easy Listening'' Or Genre 
= ''Electronic'' Or Genre = ''Ethnic'' Or Genre = ''Eurodance'' Or Genre = ''Euro-House'' Or Genre = ''Euro-Techno'' Or Genre = ''Fast Fusion'' Or Genre 
= ''Folk'' Or Genre = ''Folklore'' Or Genre = ''Folk-Rock'' Or Genre = ''Freestyle'' Or Genre = ''Funk'' Or Genre = ''Fusion'' Or Genre = ''Game'' Or Genre 
= ''Gangsta'' Or Genre = ''Goa'' Or Genre = ''Gospel'' Or Genre = ''Gothic'' Or Genre = ''Gothic Rock'' Or Genre = ''Grunge'' Or Genre = ''Hard Rock'' Or 
Genre = ''Hardcore'' Or Genre = ''Heavy Metal'' Or Genre = ''Hip-Hop'' Or Genre = ''House'' Or Genre = ''Humour'' Or Genre = ''Indie'' Or Genre 
= ''Industrial'' Or Genre = ''Instrumental'' Or Genre = ''Instrumental Pop'' Or Genre = ''Instrumental Rock'' Or Genre = ''Jazz'' Or Genre = ''Jazz+Funk'' 
Or Genre = ''Jungle'' Or Genre = ''Latin'' Or Genre = ''Lo-Fi'' Or Genre = ''Meditative'' Or Genre = ''Merengue'' Or Genre = ''Metal'' Or Genre = ''Musical'' 
Or Genre = ''National Folk'' Or Genre = ''Native US'' Or Genre = ''Negerpunk'' Or Genre = ''New Age'' Or Genre = ''New Wave'' Or Genre = ''Noise'' Or 
Genre = ''Oldies'' Or Genre = ''Opera'' Or Genre = ''Other'' Or Genre = ''Polka'' Or Genre = ''Polsk Punk'' Or Genre = ''Pop'' Or Genre = ''Pop/Funk'' Or 
Genre = ''Pop-Folk'' Or Genre = ''Porn Groove'' Or Genre = ''Power Ballad'' Or Genre = ''Pranks'' Or Genre = ''Primus'' Or Genre = ''Progressive Rock'' Or 
Genre = ''Psychadelic'' Or Genre = ''Psychedelic Rock'' Or Genre = ''Punk'' Or Genre = ''Punk Rock'' Or Genre = ''R&B'' Or Genre = ''Rap'' Or Genre 
= ''Rave'' Or Genre = ''Reggae'' Or Genre = ''Retro'' Or Genre = ''Revival'' Or Genre = ''Rhytmic Soul'' Or Genre = ''Rock'' Or Genre = ''Rock & Roll'' Or 
Genre = ''Salsa'' Or Genre = ''Samba'' Or Genre = ''Satire'' Or Genre = ''Showtunes'' Or Genre = ''Ska'' Or Genre = ''Slow Jam'' Or Genre = ''Slow Rock'' Or 
Genre = ''Sonata'' Or Genre = ''Soul'' Or Genre = ''Sound Clip'' Or Genre = ''Soundtrack'' Or Genre = ''Southern Rock'' Or Genre = ''Space'' Or Genre 
= ''Speech'' Or Genre = ''Swing'' Or Genre = ''Symphonic Rock'' Or Genre = ''Symphony'' Or Genre = ''Tango'' Or Genre = ''Techno'' Or Genre = ''Techno-Industrial'' Or Genre = ''Terror'' Or Genre = ''Top 40'' Or Genre = ''Trailer'' Or Genre = ''Trance'' Or Genre = ''Trash Metal'' Or Genre = ''Tribal'' Or Genre = ''Trip-Hop'' Or Genre = ''Vocal'')


Sen så har du inte normaliserat tabellen. Du bör göra en separat tabell som innehåller alla genrer och sen gärna en till tabell som kopplar ihop ett låt-ID med en ett genre-ID. På så sätt kan du dessutom ha flera genrer till varje låt.

Låt-tabell:
ID, Låtnamn

Genre-tabell:
ID, Genre

Kopplingstabell:
Låt-ID, Genre-ID

Vill du bara ha en genre per låt så kan du förenkla lite.

Låt-tabell:
ID, Låtnamn, Genre-ID

Genre-tabell:
ID, Genre


Svara

Sv:Ännu en SQL-fråga

Postades av 2012-08-02 21:17:11 - Pelle Johansson

Du kan också för övrigt korta ner din enorma sqlsats genom att skriva:

where category='musik' and genre in('acapella','acid','azid jazz')


Eller det kanske är de flesta , så kan du istället välja vilka som INTE skall vara med :)
where category='musik' and genre NOT in('acapella','acid','azid jazz')


Svara

Sv:Ännu en SQL-fråga

Postades av 2012-08-02 21:17:27 - Pelle Johansson

Du kan också för övrigt korta ner din enorma sqlsats genom att skriva:

where category='musik' and genre in('acapella','acid','azid jazz')


Eller det kanske är de flesta , så kan du istället välja vilka som INTE skall vara med :)
where category='musik' and genre NOT in('acapella','acid','azid jazz')


Svara

Nyligen

  • 19:38 Rekommendera något intressant
  • 19:13 Международная перевозка грузов
  • 00:01 DL Van Tuning | Exclusive Body Kit
  • 12:08 Indian casino
  • 04:14 Vad finns det för kratomalternativ
  • 14:16 Indian online casino
  • 14:15 Indian online casino
  • 08:28 Butiksskyltar: Hur upplever utbude

Sidor

  • Hem
  • Bli bonusmedlem
  • Läs artiklar
  • Chatta med andra
  • Sök och erbjud jobb
  • Kontakta oss
  • Studentlicenser
  • Skriv en artikel

Statistik

Antal besökare:
Antal medlemmar:
Antal inlägg:
Online:
På chatten:
4 570 871
27 965
271 770
556
0

Kontakta oss

Frågor runt konsultation, rådgivning, uppdrag, rekrytering, annonsering och övriga ärenden. Ring: 0730-88 22 24 | pelle@pellesoft.se

© 1986-2013 PelleSoft AB. Last Build 4.1.7169.18070 (2019-08-18 10:02:21) 4.0.30319.42000
  • Om
  • Kontakta
  • Regler
  • Cookies