FAQ |
Kalender |
2006-10-22, 16:53 | #1 | ||
|
|||
Nykomling
|
Hej.
Jag använder följande sats: SELECT * FROM medlemmar WHERE TRIM = 'Ja' AND RAS1 = 'DS' OR RAS2 = 'DS' OR RAS3 = 'DS' ORDER BY 'POSTADRESS' I tabellen finns även ett fält som heter "MEDLEMTILL" som är i "DATE"-format. Där finns det datum där medlemmsskapet upphör. Hur skriver jag i satsen ovan för att INTE välja dom medlemmar där medlemmsskapet har upphört. /peter |
||
Svara med citat |
2006-10-22, 17:01 | #2 | |||
|
||||
Mycket flitig postare
|
MEDLEMTILL < NOW()
|
|||
Svara med citat |
2006-10-23, 08:13 | #3 | ||
|
|||
Mycket flitig postare
|
Snarare MEDLEMTILL > NOW() för att välja bara de medlemmar där medlemskapet inte upphört.
|
||
Svara med citat |
2006-10-23, 08:16 | #4 | |||
|
||||
Mycket flitig postare
|
Citat:
Nu kanske du har också "Kanske" som ett val, men jag har iallafall sagt vad jag tänkte . |
|||
Svara med citat |
2006-10-23, 08:16 | #5 | ||
|
|||
Medlem
|
Du bör nog även ha några paranteser...
SELECT * FROM medlemmar WHERE TRIM = 'Ja' AND (RAS1 = 'DS' OR RAS2 = 'DS' OR RAS3 = 'DS') ORDER BY 'POSTADRESS' |
||
Svara med citat |
2006-10-23, 14:20 | #6 | ||
|
|||
Medlem
|
Citat:
Är den NULL så är det falskt och är den tom (inte NULL då) så är det sant. Tar bara upp en bit istället för dina oändligt stora åtta bit |
||
Svara med citat |
2006-10-23, 15:32 | #7 | |||
|
||||
Mycket flitig postare
|
Pedagogiskt är väl snarare ENUM('ja','nej','kanske') även om det tar hela tar sina åtta bit... Att använda VARCHAR är ju genomkasst men jag misstänker att CHAR(0) blir lite opraktiskt om man inte måste optimera ändlöst... ENUM är ju också praktiskt genom att man kan ställa querien på samma sätt som om det vore en textsträng utan att ändra något. Dessutom vet jag inte hur många gånger jag har trott att ja/nej räcker bara för att senare vara tvungen att ändra till 'kanske','vet ej','snart','ibland'... Där är ENUM oslagbart. Och den lilla tyngden som 8 bitar utgör är knappast ett problem.
Edit: ENUM() och SET() är verkligen underskattade har jag en känsla av. När man går tillbaks till en tabell med CHAR(0) efter ett halvår (eller får en tabell som någon annan skapat) så är risken stor att man inte fattar ett jota av hur man tänkt. Roligt som kuriosa dock... |
|||
Svara med citat |
2006-10-23, 15:56 | #8 | ||
|
|||
Nykomling
|
Det är löst!
Så här blev det: SELECT * FROM medlemmar WHERE TRIM = 'Ja' AND (RAS1 = 'DS' OR RAS2 = 'DS' OR RAS3 = 'DS') AND MEDLEMTILL > NOW() ORDER BY 'POSTADRESS' /peter |
||
Svara med citat |
2006-10-23, 16:12 | #9 | |||
|
||||
Mycket flitig postare
|
Liten kommentar till den egentliga frågan:
Citat:
|
|||
Svara med citat |
2006-10-23, 19:19 | #10 | ||
|
|||
Medlem
|
Citat:
SET och ENUM är dom två jag använder mest. Handlar det t.ex. om att en eller flera värden kan vara valda så är det ju SET som uteslutande gäller, annars för ja/nej är det ENUM eller TINYINT. Jag arbetar hellre med INT(i alla sina storlekar) än CHAR ('value') eftersom min erfarenhet är att numeriska värden alltid går snabbare att jobba med gentemot databasen. |
||
Svara med citat |
Svara |
|
|