SELECT LIKE med siffror?

Databaser & SQL

5 svar · 202 visningar · startad av Neo

Medlem sedan dec. 200079 inlägg
Trådstart#1

Hej!

Jag har lite problem med en SELECT LIKE...

Kod:
--------------------------------
$sqlkal = "SELECT * from icalender WHERE filer LIKE '%$peopleid%' AND WEEK(datum,1) = WEEK(now(),1) ORDER by datum ASC";

Fältet filer ser ut t ex så här:
1,14,5

Jag skickar med $peopleid i query-stringen:

calender.php?peopleid=1

Då vill jag ha alla poster där 1 är med i fältet filer...

Detta funkar på text men verkar inte funka på siffror, eller?

// Neo

Medlem sedan dec. 200012 464 inlägg
#2

jag tycker att du borde ändra din datamodell och inte Lagra inte flera värden i samma kolumn. Det blir bara problem. Lagra varje värde som en egen post och om det är numeriska värden använd typen integer så kan du använda vanliga jämförelser.

Medlem sedan dec. 200079 inlägg
#3

Hej LarsG!

Så du säger att det inte finns någon bra lösning så som det ser ut nu...?

Anledningen till att det ser ut som det gör är att jag adderar flera personer med id till samma post, sen när jag visar dem så kör jag en explode och hämtar personerna på id från en annan tabell.

Har du något bättre förslag?

// Neo

Medlem sedan dec. 200012 464 inlägg
#4

Ja det går väl att skriva något sofistikerat regular expression men det måste då anpassas beroende på vilket tal man söker.

T.ex om du har 14,22 i en post så vill du inte ha träff om du söker efter 1.

En sådan sökning blir inte speciellt effektiv då det inte går att använda index.

Om du lagrar varje id för sig så behöver du inte använda explode heller utan du kan joina tabellerna direkt i SQL-satsen. (Det är det som är hela vitsen med relationsdatabaser ;))

Medlem sedan dec. 200079 inlägg
#5

Hej igen LarsG!
(ursäkta att jag är jobbig idag)

Okej, så om min INSERT ser ut så här:
--------------------------------
$sql = "INSERT INTO icalender (datum,datumcheck,ar,manad,dag,starth,startm,sluth,slutm,plats,arende,filer,antal,onskemal) VALUES ('$datetime','$datetimecheck','$ar','$manad','$dag','$starth','$startm','$sluth','$slutm','$plats','$arende','$filer','$antal','$onskemal')";
$result = mysql_query($sql);
--------------------------------
så borde jag kunna använda:

$getid = mysql_insert_id();

och sen INSERTA alla siffror i filer-variabeln i en annan tabell med rätt id... eller hur skulle det se ut???

(jag har hållt på sen 7 i morse så jag är lite trött...)

// Neo

Medlem sedan dec. 200012 464 inlägg
#6

Jo, precis så att du plockar upp nyckelvärdet och använder det när du gör insert(ar) i din andra tabell.

252 ms totalt · 4 externa anrop · v20260731065814-full.d34c6d5a
120 ms — deklarationer (db)
0 ms — hämta statistik (cache)
129 ms — hämta tråd, inlägg och bilagor (db)
120 ms — ändringar (db)