02. maj 2002 - 14:59Der er
15 kommentarer og 2 løsninger
Find ikke valgte
Jeg har tre tabeller; En der indeholder brugerne, en der indeholder en række valgmuligheder, og en der indeholder oplysninger om hvilke brugere der har valgt hvad.
Hvordan kan jeg lave et udtræk der udskriver de valg som ingen bruger har valgt?
I dette særtema om aspekter af AI ser vi på skiftet fra sprogmodeller til AI-agenter, og hvordan virksomheder kan navigere i spændet mellem teknologisk hastighed og behovet for menneskelig kontrol.
Kan ikke lige hitte ud af, hvordan din db er skruet sammen, MEN
Kan vel gøres ved at du finder antallet af brugere COUNT() Finder antallet af valg COUNT() i hver mulighed Slutligt hvis antallet af brugere = antallet af brugere minus antallet af valg - så er der BINGO
Hvis du vil se de valgmuligheder, som overhovedet ikke er valgt, s¨kan du bruge denne: (Jeg har angivet den primære nøgle i Valgmuligheder til at hedde "ID" og den tilsvarende fremmednøgle i Oplysninger til at hedde "valgmulighedID")
SELECT V.* FROM Valgmuligheder V LEFT JOIN Oplysninger O ON V.ID=O.valgmulighedID WHERE O.valgmulighedID Is Null;
Du beder om flere lister: 1: liste over valgmuligheder som ikke er foretaget (i dit første Q). 2: liste over brugere som intet har valgt (i din sidste kommentar). flg. giver liste over users som ingen menuer har valgt: SELECT * FROM User LEFT JOIN Rettigheder ON User.ID = Rettigheder.Bruger_ID WHERE Rettigheder.Bruger_ID Is Null flg. giver liste over menuer som ikke er valgt af nogen users: SELECT * FROM Menu LEFT JOIN Rettigheder ON Menu.ID = Rettigheder.Rettigheds_ID WHERE Rettigheder.Rettigheds_ID Is Null
>>hansk Jeg har måske været lidt dårlig til at forklare mig - men nu er den ved at være der. Der er dog stadig et lille uafklaret problem. Jeg bruger nu nedenstående sql-sætning der vise bruger der endnu ikke har valgt noget i hele tabellen. Men det jeg godt kunne tænke mig at få vist, er brugere(user) der ikke har valgt noget i forhold til en enkelt post (menu.id)
SELECT * FROM user LEFT JOIN rettigheder ON user.id = rettigheder.bruger_id WHERE rettigheder.Bruger_ID Is Null + noget i stil med and menu.id='$var1'
Den var jo lidt mere tricky, men prøv denne her: SELECT * FROM User WHERE User.ID not in (Select Rettigheder.Bruger_id from Rettigheder where Rettigheder.Rettigheds_id = '$var1')
Den gik ikke - følgende $resultat = mysql_query("SELECT * FROM user WHERE user.id not in (Select rettigheder.Bruger_id from rettigheder where rettigheder.Rettigheds_id = '$var1')") or die(mysql_error());
giver nedenstående fejl: You have an error in your SQL syntax near 'Select rettigheder.Bruger_id from rettigheder where rettigheder.Rettigheds_id ' at line 2
Jeg har skrevet mit forslag længere oppe, men det er ikke noget jeg selv har prøvet, så jeg kan ikke være mere specifik udover at jeg læste om det i en eller anden bog, hvor de vist nok foreslog det som muligt alternativ til bl.a. denne type udvælgelser.
Hej Søren, Inden jeg foreslår en anden løsning vil jeg lige spørge om man kan selektere på view's i mysql? Hvis du kan det kan problemet løses ved at først lave et view og derefter bruge en where-clause på dette view.
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.