Database valg ud fra on eller off?

Tags:    php

Hej

Jeg skal hente nogle produkter fra en database. Disse produkter kan monteres på forskellige måder, og derfor vil jeg lave mine menuer efter om de kan monteres på den ene eller anden måde.

Problemet er, at nogle af produkterne kan monteres på flere måder, hvorfor de skal forekomme i flere menuer (eller kategorier om man vil).

Jeg har i databasen lavet en on/off vælger. Eks:

Monteringsmulighed 1: 1 eller 0
Monteringsmulighed 2: 1 eller 0
Monteringsmulighed 3: 1 eller 0
Monteringsmulighed 4: 1 eller 0
osv.

Hvorledes laver jeg en forespørgsel med "vælg hvor rækkerne er 'on' fra række dit til dat" ?

Mvh
Gunnar



Hvordan ser din tabel ud? Er det ikke bare at lave en "SELECT * FROM table WHERE mulighed1=1"



umiddelbart hvis du vitterlig mener hvad du siger og bruger mysql tror jeg du skal ud i noget som det her:

SELECT r . * FROM ( SELECT * FROM "TABLE" LIMIT DIT ,DAT-DIT) AS r WHERE r.MULIGHED =1


Du skal huske at udskifte TABLE, DIT, DAT og MULIGHED med de rigtige værdier.



Hmm...

Jeg har brug for at den ligesom "scanner" de rækker der hedder mulighed 1, 2, 3 osv., for så at hente fra dem hvor der er 'on'.

Mvh
Gunnar



umiddelbart hvis du vitterlig mener hvad du siger og bruger mysql tror jeg du skal ud i noget som det her:

SELECT r . * FROM ( SELECT * FROM "TABLE" LIMIT DIT ,DAT-DIT) AS r WHERE r.MULIGHED =1


Du skal huske at udskifte TABLE, DIT, DAT og MULIGHED med de rigtige værdier.


Det prøver jeg lige - tak!

Mvh
Gunnar



- skulle måske lige have sagt, at der også er andre rækker end disse som skal hentes, og det vil denne "limit" vel influere på?

Mvh
Gunnar



Du kan jo bruge LIKE:
Hvis hver menu har en kode, 10,11,12,13 etc., kan du i et fejl skrive de forskellige koder som "11 13".
Når du generer dine menuer er det jo bare at lave en SELECT * WHERE tabel LIKE '11', hvor 11 er den nuværende menu du genererer.
Det er simpelt men effektivt i mindre systemer.



Du kan jo bruge LIKE:
Hvis hver menu har en kode, 10,11,12,13 etc., kan du i et fejl skrive de forskellige koder som "11 13".
Når du generer dine menuer er det jo bare at lave en SELECT * WHERE tabel LIKE '11', hvor 11 er den nuværende menu du genererer.
Det er simpelt men effektivt i mindre systemer.

Du skal så bare tænke på at hvis der opstår et sted med fx id 111 så vil den stadig kunne identificere med LIKE '%11%'



Jens: Du skal lære at læse og tænke før du skriver tilbage på et svar. Der var jo en grund til at jeg skrev: ...effektivt i mindre systemer.
Man kan jo bare starte nummereringen med trecifrede numre og sørge for at ingen ligner hinanden, så svært er det heller ikke. Idéen er stadig den samme.




Indlæg senest redigeret d. 10.09.2008 15:18 af Bruger #13985
det ville den sikkert skrev svaret som svar til

Hvorledes laver jeg en forespørgsel med "vælg hvor rækkerne er 'on' fra række dit til dat" ?


under antagelse af at dit og dat var rækketal, hvis de havde været det ville min kode virker ved første at lave en tabelle med alle de mulige rækker mellem dit og dat også lave en select på disse der kun returneret rækkerne hvor mulighed var 1.

eksempel
Fold kodeboks ind/udKode 

Udfra beskrivelsen i starten af din post har du en eller anden mange til mange relation, hvert product har mange monsteringer og hver montering har mange produkter, hvis dette er tilfældet skulle du lave en tredje tabel der forbinder de 2 tabeller ved at have primære nøglerne fra begge for hver gang der er en relation.

så for at finde alle produkter for en given montering:

SELECT p.* FROM produkter AS p INNER JOIN montering_produkter AS mp ON(p.produktid=mp.produktid) WHERE mp.monteringid=DETTE

hvor dette selvfølgelig skal udskiftes.

eller hvis flere monteringer er valg:

SELECT p.*,mp.monteringsid FROM produkter AS p INNER JOIN montering_produkter AS mp ON(p.produktid=mp.produktid) WHERE mp.monteringid=DETTE OR mp.monteringsid=DETTE2

der er sikkert bedre måder at skrive de 2 sql queries på.



Indlæg senest redigeret d. 10.09.2008 15:26 af Bruger #5620
t