Avatar billede bramsing Nybegynder
03. august 2005 - 14:12 Der er 19 kommentarer og
1 løsning

mySQL - søge i 2 tabeller, til 1 liste

Hejsa.. Jeg er igang med en lille opgave hvor jeg skal lave et stemme system...

I tabel 1 (liste) er der nogle navne i kolonne Navn..
navn1
navn2
navn3

I kolonne 2 er der et felt der hedder vaelger, hvor eksv. navn2 er noteret i...

Personen der er logget ind (navn2 = session("navn")) må ikke se sig selv på den stemmeliste og han må heller ikke kunne se dem som han har stemt på før (altså session("navn") = vote.vaelger)

Det første med at han ikke må se sig selv på listen er ikke problemet... Men at få fra soteret dem han har stemt på driller lidt...
Jeg har prøvet med nedenstående kode, men her kommer der intet frem på listen...

rsSQLstem = "SELECT * FROM liste, vote WHERE iste.navn <> '"&session("navn")&"' AND liste.valgslut >= CURDATE() AND vote.vaelger <> '"&session("navn")&"'"


Nogen der kan hjælpe ??
Avatar billede bramsing Nybegynder
03. august 2005 - 14:13 #1
Kolonne 2 = tabel 2 (vote)... sorry...
Avatar billede beef12 Nybegynder
03. august 2005 - 14:20 #2
har du ikke glemt at joine liste og vote ?

hvorfor bruger du wildcards på session(navn). Hvis du har en bruger der hedder beef12, ville den komme til at sortere andre brugere fra f.eks. hvis der en der hedder beef123 eller mybeef12? Dvs jeg foreslår at du fjerner & fra din query
Avatar billede beef12 Nybegynder
03. august 2005 - 14:23 #3
ah... glem den anden kommentar, jeg så ikke at det var et asp spm. &-tegnet er vel bare concat? Er ikke en ASP haj...
Avatar billede bramsing Nybegynder
03. august 2005 - 14:25 #4
Jeg er ikke så meget inde i joine... Har du et lille eksempel ??
Avatar billede softspot Forsker
03. august 2005 - 14:39 #5
Kunne det være noget i stil med:

SELECT *
FROM liste L
INNER JOIN vote V ON L.navn = V.valeger
WHERE L.navn <> '" & session("navn") & "'
  AND L.valgslut >= CURDATE()
  AND V.vaelger <> '" & session("navn") & "'
  AND V.navn NOT IN (SELECT vs.navn FROM vote WHERE v.vaelger = '" & session("navn") & "')
Avatar billede bramsing Nybegynder
03. august 2005 - 14:50 #6
softspot.. Er denne linie korrekt ??
(SELECT vs.navn FROM vote WHERE v.vaelger = '" & session("navn") & "') ?? Jeg tænker på vs.navn ??
Avatar billede softspot Forsker
03. august 2005 - 14:59 #7
sorry, jeg glemte at vote i den subquery skulle have et alias. Det skal naturligvis være:

(SELECT vs.navn FROM vote vs WHERE v.vaelger = '" & session("navn") & "')

jeg vil dog lige sige at jeg ikke er sikker på at syntaksen holder ifht. MySQL, da jeg ikke har erfaring med denne DBMS... men jeg håber idéen stadig kan bruges om ikke andet :)
Avatar billede bramsing Nybegynder
03. august 2005 - 15:08 #8
Hmm.. Jeg kan ikke få det til at virke :(

SELECT * FROM liste L INNER JOIN vote V ON L.navn = V.vaelger WHERE L.navn <> '" & session("navn") & "' AND L.valgslut >= CURDATE() AND V.vaelger <> '" & session("navn") & "' AND V.navn NOT IN (SELECT vs.navn FROM vote vs WHERE v.vaelger = '" & session("navn") & "')"

Skal lige høre... Feltet: Navn er i tabel: Liste (L)... Passer det så at der står V.navn et sted.. og også at den bliver selected som vs.navn i vote (V) ??

Håber ikke at jeg stiller for dumme spørgsmål.. Men jeg er ny i JOIN

BTW.. Jeg får denne fejl...

Microsoft OLE DB Provider for ODBC Drivers error '80040e14'

You have an error in your SQL syntax near 'SELECT vs.navn FROM vote vs WHERE v.vaelger = 'navn2')' at line 1
Avatar billede softspot Forsker
03. august 2005 - 15:16 #9
Hmmm... jeg har vel fortolket mig frem til at der også skulle være en reference til den man har stemt på og så kaldt denne reference for navn, men det kan jeg forstå var en fejl :)

Hvordan markerer du hvem der er stemt på (vote.vaelger er den som afgiver stemmen, korrekt)?
Avatar billede bramsing Nybegynder
03. august 2005 - 15:18 #10
vote.vaelger = session("navn") så ja, det må det være...
Avatar billede bramsing Nybegynder
03. august 2005 - 15:20 #11
Vil det sige at V.navn og vs.navn = personen der bliver valgt ?? for det felt har jeg kaldt "denvalgte"
Avatar billede softspot Forsker
03. august 2005 - 15:22 #12
Ja, det vil jeg mene... giver det nogen mening?
Avatar billede bramsing Nybegynder
03. august 2005 - 15:26 #13
Hmm... Jeg får samme fejl som fra før...
Avatar billede softspot Forsker
03. august 2005 - 15:28 #14
Det kan være du skal have AS mellem tabelnavn og alias (det skal man i access, men ikke i SQL Server)...

SELECT * FROM liste AS L INNER JOIN vote AS V ON L.navn = V.vaelger WHERE L.navn <> '" & session("navn") & "' AND L.valgslut >= CURDATE() AND V.vaelger <> '" & session("navn") & "' AND V.denvalgte NOT IN (SELECT vs.denvalgte FROM vote AS vs WHERE v.vaelger = '" & session("navn") & "')"
Avatar billede softspot Forsker
03. august 2005 - 15:30 #15
Hvis du har en SQL-syntaks manual til mySQL, kunne du evt. slå tabel alias op for at se hvilken syntaks du skal bruge - hvis altså det er det. En anden syntaks du skal kigge på er IN, for jeg er ikke sikker på om det er

felt NOT IN (feltsæt)

eller

NOT felt IN (feltsæt)

...eller måske noget helt tredie...
Avatar billede bramsing Nybegynder
03. august 2005 - 16:01 #16
Jeg fatter ikke en dyt af det... Jeg kan slet ikke få den til at makke ret... Jeg vil gerne give point for din kamp, selvom den ikke gav pote...

Jeg må se på om jeg skal lave strukturen om i de to tabeller... også ellers studere MySQL vedr. JOIN
Avatar billede bramsing Nybegynder
03. august 2005 - 19:42 #17
Lukket igen...
Avatar billede softspot Forsker
03. august 2005 - 20:11 #18
Synd, ville ellers gerne have kæmpet lidt videre samen med dig, men hvis du giver op, så gider jeg heller ikke :)
Avatar billede bramsing Nybegynder
04. august 2005 - 10:18 #19
softspot - Jeg opretter et nyt spørgsmål, hvis du fortsat vil kæmpe...
Avatar billede bramsing Nybegynder
04. august 2005 - 10:34 #20
Jeg har oprettet et - forhåbenligt - mere uddybende spørgsmål vedr. mit lille problem.. http://www.eksperten.dk/spm/637301
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
Kurser inden for grundlæggende programmering

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