Avatar billede tanx Nybegynder
22. november 2005 - 20:51 Der er 7 kommentarer og
1 løsning

WHERE is the solution??

Hejsa,

I nedenstående WHERE-sætning var det min intention at lade "bonus.bonusID" returnere et resultat, i tilfælde af at kriterierne herfor var opfyldte. Hvis "bonus.bonusID = '$_GET[id]'" derimod ikke returnerede et resultat ville jeg gerne have at (default.defaultID = '1') returnerede sit eget resultat i stedet.

Det lader sig dog ikke gøre med nedenstående sætning, og i de tilfælde, at begge WHERE-kriterier er opfyldte returnerer kaldet blot begge resultater.


***
WHERE bonus.bonusID = '$_GET[id]' OR default.defaultID = '1'
***

Hvordan kan man på nemmeste vis få "default" returneret men KUN hvis "bonus" IKKE eksisterer? Og HVIS "bonus" eksisterer, så kun få "bonus" returneret?
Avatar billede nielle Nybegynder
22. november 2005 - 21:21 #1
Den må du lige uddybe lidt. Er "bonus" og "default" f.eks. to forskellige tabeller? Og hvis der er; Hvad er så sammenhængen med dem?
Avatar billede tanx Nybegynder
22. november 2005 - 21:38 #2
Hej Nielle,

Selve navnene fungerer blot som illustration, men ja, "bonus" og "default" ligger i princippet i to forskellige tabeller. Dét jeg er ude efter mere specifikt, er en kommando eller lign., der blot for illustrationens skyld! kunne hedder:

WHERE bonus.bonusID = '$_GET[id]' OR IF BONUS DOES NOT EXIST THEN default.defaultID = '1'

Bemærk, jeg er kun ude efter, at WHERE-sætningen returnerer enten det ene eller det andet resultat - ikke begge som det er resultatet når jeg bruger "OR".

Giver det mening?
Avatar billede nielle Nybegynder
22. november 2005 - 21:51 #3
Jeg ved faktisk ikke om det kan gøres i een SQL-sætning. :^S

Personligt ville jeg gøre det over 2 SQL-sætninger, på nogenlunde denne facon:

$sql = "... WHERE bonus.bonusID = '$_GET[id]'";
$query = mysql_query($sql) or die(mysql_error());

if (mysql_num_rows($query) == 0)
{
    $sql = "... default.defaultID = '1'";
    $query = mysql_query($sql) or die(mysql_error());
}

$row = mysql_fetch_assoc($query);
Avatar billede Slettet bruger
22. november 2005 - 23:35 #4
Hvad med

WHERE bonus.bonusID = '$_GET[id]' OR ( bonus.bonusID IS NULL AND default.defaultID = '1')

NB! Det er ikke en god ide med en streng som ID. Du er måske ude efter tal. Så skal '' om dine to id-værdier fjernes.
Avatar billede tanx Nybegynder
24. november 2005 - 20:57 #5
Hej begge to!

Tak for jeres indlæg og forslag. Jeg har fiflet lidt og har fået det til at virke, ud fra sandbox' forslag - så derfor opret et svar så får du nogle point.
Nielle - tak for din tid, alligevel!

P.S. Hvorfor er det ikke en god idé med en streng som ID?
Avatar billede Slettet bruger
24. november 2005 - 21:15 #6
Om det er en god ide med strenge som ID kommer lidt an på strukturen på databasen, men hvis den alligevel indeholder et tal, virker det på mig ganske fjollet at gemme som en streng - med mindre der skal være forskel på 1 og 01 eller noget i den stil.

Det er altså mere et spørgsmål om at bruge den datatype, som passer til indholdet.
Avatar billede nielle Nybegynder
24. november 2005 - 21:19 #7
Jeg ville nu også til enhver tid have mine id'er som tal; Det optager mindre plads i databasen, og så kan man jo også bruge auto_increment. :^)
Avatar billede tanx Nybegynder
29. november 2005 - 18:44 #8
Ok, det er noteret :) Tak for hjælp og info.
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