Avatar billede straszek Praktikant
02. maj 2002 - 14:59 Der 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?
Avatar billede sthen Nybegynder
02. maj 2002 - 15:05 #1
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
Avatar billede -mundi- Nybegynder
02. maj 2002 - 15:09 #2
select * from tblValgmuligheder where tblValgmuligheder.id not in (select distinct id from tblOplysninger )

er ikke testet, men noget i den stil
Avatar billede disky Nybegynder
02. maj 2002 - 15:48 #3
mundi:
Det vil aldrig virke da mysql ikke understøtter sub selects.
Avatar billede -mundi- Nybegynder
02. maj 2002 - 15:58 #4
Hmm det er sgu da en lortedatabase så =)
Avatar billede tipsen Nybegynder
02. maj 2002 - 16:16 #5
Kan man ikke med nogle selects lave nogle midlertidige tabeller i hukommelsen og så køre på dem med 2-3 queries?
Avatar billede hansk Nybegynder
02. maj 2002 - 23:03 #6
Dette burde gøre det:
SELECT * FROM Brugere
LEFT JOIN BrugerValg ON Brugere.BrugerID = BrugerValg.BrugerID
WHERE BrugerValg.BrugerID  Is Null
Avatar billede proaccess Nybegynder
03. maj 2002 - 07:35 #7
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;
Avatar billede straszek Praktikant
04. maj 2002 - 14:32 #8
JEg kan ikke finde ud af at tilpasse jeres eksempler til mit behov så jeg prøver lige at forklarer igen. Jeg har tre tabeller

Menu
- id
- kategori
- titel

User
- id
- username

rettigheder
- Bruger_id  ( fra User id)
- Rettigheds_id (fra menu id)

Nu var det så jeg gerne ville have en liste der viser brugere der endnu ikke har valgt noget.

Håber det gav mening

M.v.h. Søren
Avatar billede hansk Nybegynder
06. maj 2002 - 08:10 #9
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
Avatar billede straszek Praktikant
08. maj 2002 - 09:10 #10
>>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'
Avatar billede hansk Nybegynder
08. maj 2002 - 09:37 #11
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')
Avatar billede straszek Praktikant
08. maj 2002 - 09:45 #12
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
Avatar billede tipsen Nybegynder
08. maj 2002 - 10:05 #13
-man kan ikke lave subselects i mysql (endnu)
Avatar billede straszek Praktikant
08. maj 2002 - 10:06 #14
>> tipsen

Har du et andet forslag?
Avatar billede tipsen Nybegynder
08. maj 2002 - 10:09 #15
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.
Avatar billede straszek Praktikant
08. maj 2002 - 10:25 #16
Er der nogen der kan være behjælpelig med lave der som tipsen forslår? - jeg kan evt. oprette et nyt spørgsmål med flere point!

Søren
Avatar billede hansk Nybegynder
08. maj 2002 - 13:12 #17
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.
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester