Avatar billede ofirpeter Nybegynder
07. august 2006 - 09:04 Der er 11 kommentarer og
1 løsning

Kryptisk MySQL forespørgsel

Hej eksperter. Jeg har en tabel der ser således ud:

specannid | annonceid | specid |  value  |
    1         50       1      2 dørs
    2         50       2      noget
    3         50       3      111
    4         50       5      fsd
    5         51       2      noget
    6         51       2      noget2
    7         51       3      dasda
    8         51       5      fsd
    9         52       1      2 dørs
  10         52       2      noget

Nu ønsker jeg at lave en søgning på annonceid, hvor jeg finder alle de annonce id der opfylder betingelserne at

Der hvor specid = "1" skal value = "2 dørs" OG
Der hvor specid = "2" skal value = "noget"

Det skulle så skrive 50 og 52.

Hvordan kan dette lade sig gøre?
Avatar billede jensgram Nybegynder
07. august 2006 - 09:12 #1
Er ikke sikker på, at jeg forstår, men:

SELECT annonceid FROM tabel WHERE (specid = 1 AND value = "2 dørs") OR (specid = 2 AND value = "noget")
Avatar billede Slettet bruger
07. august 2006 - 09:15 #2
___________________________________________
| specannid | annonceid | specid |  value  |
|    1    |    50    |  1    | 2 dørs  |
|    2    |    50    |  2    | noget  |
|    3    |    50    |  3    | 111    |
|    4    |    50    |  5    | fsd    |
|    5    |    51    |  2    | noget  |
|    6    |    51    |  2    | noget2  |
|    7    |    51    |  3    | dasda  |
|    8    |    51    |  5    | fsd    |
|    9    |    52    |  1    | 2 dørs  |
|  10    |    52    |  2    | noget  |
___________________________________________
Avatar billede ofirpeter Nybegynder
07. august 2006 - 09:28 #3
$Query = mysql_query("SELECT annonceid FROM specifikation_annonce WHERE (specid = '1' AND value = '2 dørs') OR (specid = '2' AND value = 'noget')");
while ($row = mysql_fetch_array($Query)){
  echo $row["annonceid"];
}

Sådan får jeg 5050515252

Jeg skal kun have 50 og 52 da de er de eneste annonceid, hvor VALUE = "2 dørs" der hvor SPECID = 1 ,og hvor VALUE = "noget" der hvor specid = "2"
Avatar billede jensgram Nybegynder
07. august 2006 - 15:12 #4
Nej, "|    5    |    51    |  2    | noget  |" opfylder da netop specid=2 OG value=noget...
Avatar billede jensgram Nybegynder
07. august 2006 - 15:13 #5
Tror ikke jeg forstår hvad det EGENTLIG er du ønsker!
Avatar billede Slettet bruger
07. august 2006 - 15:20 #6
Tror jeg har fattet hvad du mener:

Du vil have 50 ud fordi den har både har (specid = "1" og value = "2 dørs") OG
(specid = "2" og value = "noget").

Umiddelbart kan jeg ikke se hvordan det skulle kunne lade sig gøre, med mindre du deler din tabel op i 2 tabeller.
Avatar billede ofirpeter Nybegynder
07. august 2006 - 15:22 #7
Det er helt rigtigt. Jeg er ikke interesseret i at dele min tabel op. Mon der ikke er en løsning?
Avatar billede jensgram Nybegynder
07. august 2006 - 15:31 #8
Måske det kan løses ved at JOIN'e tabellen med sig selv, men det er jeg slet ikke hård nok til. Håb på, at nogle af hajerne kigger herind - eller opret et nyt spørgsmål...
Avatar billede arne_v Ekspert
08. august 2006 - 01:54 #9
SELECT t1.annonceid
FROM specifikation_annonce t1,specifikation_annonce t2
WHERE t1.annonceid=t2.annonceid AND t1.specid=1 AND t1.value='2 dørs' AND t2.specid=2 AND t2.value='noget'
Avatar billede jensgram Nybegynder
08. august 2006 - 10:09 #10
Se, det var det jeg sagde ;)
Avatar billede ofirpeter Nybegynder
14. august 2006 - 13:17 #11
Du må meget gerne smide et svar arne_v
Avatar billede arne_v Ekspert
14. august 2006 - 13:24 #12
ok
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