Hallo!

Ik heb een tabel die records bevat. De tabel gaat over een verzameling foto's.
Per foto heb ik een aantal kenmerken gespecificeerd die gaan over het object.

Kenmerken
Bouwjaar
Bouwstijl
Materiaal
Type

Deze gegevens zijn weer gekoppeld aan een tabel die de kenmerken opdeelt in subkenmerken. Bijvoorbeeld:

Bouwjaar
t/m 16e eeuw
17e eeuw
18e eeuw
19e eeuw
20e eeuw
later

De tabellen zijn aan elkaar gekoppeld middels unieke id's.

Voorbeeld record uit de fototabel:
(fotogegevens,type,materiaal,bouwjaar,stijl)
(xxxx|1|3,6,4|2|7,8)

Nu wil ik een query opbouwen die kan zoeken op die losse nummers. Dus

mysql_query("SELECT * FROM fotos WHERE type='1'")

Dan moet hij alles laten zien die type 1 heeft.

Maar, de kolom kan dus uit meerdere waarden bestaan!

Nu heb ik gezocht op google, en iemand komt met de instr() functie uit MySQL.
Dat ziet er uit als:
select * from tablename where instr(field,'$some_var');



Ik begrijp er niets van. Wie kan me helpen?

Mathijs
ik denk dat je iets als een scheidingsteken moet gebruiken in de kolom, dus als je de waarde in de kolom doet:

$waarde=implode(".",$array);
mysql_query("INSERT INTO tabel(kolom) VALUES (".$waarde.")");

en om ze er uit te halen:

$waarde=mysql_fetch_object(mysql_query("SELECT * FROM * WHERE id='1'"));
$antwoorden=explode(".",$waarde->kolom);

nu staan alle waarde uit de kolom gesplitst in de array $antwoorden.
Gebruik niet verschillende waarden in 1 veld. Dit vertraagt de boel enorm bij grote tabellen. In de meeste gevallen duidt dit op een verkeerd databasemodel en is dit probleem op te lossen door het gebruik van een koppeltabel of een tabel waar je de waarden per rij invoert en koppelt aan de juiste rij in je bestaande tabel.

Reageren