Avatar billede mjl Nybegynder
03. november 2003 - 17:27 Der er 19 kommentarer og
1 løsning

Tjekke database for 4 tal på en gang.

Hejsa...

Tja - fin formulering - ikk? :o)

Jeg har i en MySQL-DB 16 felter der hedder a,b,c,d o.s.v. op til p - disse 16 felter skal tjekkes for forekomsten af 4 forskellige tal (1-2-3-4 f.eks.) - altså; findes de 4 tal i enten a,b,c,d o.s.v.

Hvordan gør jeg det enkelt?

hilsen Conrad Dinesen
Avatar billede dawin_dk Nybegynder
03. november 2003 - 17:31 #1
ved ikke om man kan lave en

where (a,b,c,d,e) in (1,2,3,4)

men du kan ihvertfald lave en ... a in (1,2,3,4) or b in (1,2,3,4)

men afhænger vel også af.. skal alle tal være tilstede, kun 1 af dem eller ...
Avatar billede mjl Nybegynder
03. november 2003 - 17:35 #2
De 16 felter indeholder forskellige tal mellem 1 og 16 eller tallet 0 - der skal så tjekkes for de 4 tal - altså er de i de 16 felter?

Eks. 1-2-3-4-0-0-7-0-0-10-11-0-13-0-15-0 Tallene 1-2-3-4 = Ja de 4 tal er der!
Avatar billede mjl Nybegynder
03. november 2003 - 17:40 #3
...og felterne med værdierne hedder jo abcdefg o.s.v. (smider lige 40 points mere i - jeg har virkelig brug for hjælpen!)
Avatar billede mjl Nybegynder
03. november 2003 - 17:55 #4
ok he he så hæver vi de 100 til 120 :o)
Avatar billede detox Nybegynder
03. november 2003 - 17:56 #5
Ja ja, rolig nu!
Avatar billede mjl Nybegynder
03. november 2003 - 17:57 #6
Sorry - ;o) skal nok...
Avatar billede dawin_dk Nybegynder
03. november 2003 - 18:00 #7
umiddelbart tror jeg at jeg ville flytte de data ud i e tabel for sig selv .. hvor du så havde 16 poster liggende ... så vil det som ejg ser det blive meget nemmere at joine sammen og se hvor mange af de tal du har angivet der findes i den tabel ... på hvert af de andre id..
Avatar billede detox Nybegynder
03. november 2003 - 18:04 #8
Hvad med:

$t1 = 1;
$t2 = 2;
$t3 = 3;
$t4 = 4;

$query = "SELECT * FROM tabel WHERE ".chr($t1+96)."=".$t1." AND ".chr($t2+96)."=".$t2." AND ".chr($t3+96)."=".$t3." AND ".chr($t4+96)."=".$t4;
Avatar billede detox Nybegynder
03. november 2003 - 18:05 #9
Det vil fx give:

SELECT * FROM tabel WHERE a=1 AND b=2 AND c=3 AND d=4

Hvis jeg har forstået dig rigtigt?
Avatar billede mjl Nybegynder
03. november 2003 - 18:09 #10
Ok - jeg har 16 felter der hedder a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p i de felter er der værdierne 1-16 eller 0

Jeg skal så tjekke om 4 tal findes...ikke nødvendigvis 1 2 3 4 det kunne også være 4 6 8 12

Den skal altså tjekke om de 4 angivne tal findes i rækken i DB'en...
Avatar billede detox Nybegynder
03. november 2003 - 18:11 #11
Det var osse det jeg mente. De 4 tal kan osse være:

$t1 = 4;
$t2 = 6;
$t3 = 8;
$t4 = 12;

$query = "SELECT * FROM tabel WHERE ".chr($t1+96)."=".$t1." AND ".chr($t2+96)."=".$t2." AND ".chr($t3+96)."=".$t3." AND ".chr($t4+96)."=".$t4;
Avatar billede detox Nybegynder
03. november 2003 - 18:19 #12
Kunne osse laves sådan her:

<?
$t[0] = 3;
$t[1] = 5;
$t[2] = 8;
$t[3] = 13;

$query = "SELECT * FROM tabel WHERE ";
for ($i=0;$i<count($t);$i++) {
    $query .= chr($t[$i]+96)."=".$t[$i]." AND ";
}
$query = substr($query, 0, strlen($query)-5);
echo $query;
?>
Avatar billede detox Nybegynder
03. november 2003 - 18:20 #13
Ville give:

SELECT * FROM tabel WHERE c=3 AND e=5 AND h=8 AND m=13
Avatar billede mjl Nybegynder
03. november 2003 - 18:37 #14
Tak - ser på det, og prøver at forstå det der chr() halløj...

Smid et svar...
Avatar billede detox Nybegynder
03. november 2003 - 18:44 #15
Ok, hvis du kan bruge det. Kan osse laves med sprintf():

<?
$t[0] = 4;
$t[1] = 6;
$t[2] = 9;
$t[3] = 14;

$query = "SELECT * FROM tabel WHERE ";
for ($i=0;$i<count($t);$i++) {
    $query .= sprintf("%c=$t[$i] AND ", $t[$i]+96);
}
$query = substr($query, 0, strlen($query)-5);
echo $query;
?>
Avatar billede mjl Nybegynder
03. november 2003 - 18:48 #17
1000 tak !!!
Avatar billede detox Nybegynder
03. november 2003 - 18:50 #18
Velbekommen c",)
Avatar billede tipsen Nybegynder
03. november 2003 - 19:32 #19
Tror jeg støtter dawin her - det lyder som om db-strukturen skal ændres... (Det kunne godt virke som en Excel bruger, der benytter databaser for første gang :-))
Avatar billede mjl Nybegynder
04. november 2003 - 17:19 #20
Ha ha - ja det kunne det nok - men ak - jeg har bare gang i et forsøg der er lidt svært at forklare...
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
Vi tilbyder markedets bedste kurser inden for webudvikling

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