/ Forside / Teknologi / Udvikling / SQL / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
SQL
#NavnPoint
pmbruun 1704
niller 962
fehaar 730
Interkril.. 701
ellebye 510
pawel 510
rpje 405
pete 350
gibson 320
10  smorch 260
WHERE nr="et tal"....
Fra : Magnus


Dato : 08-03-05 14:38

SQL="SELECT * FROM Profiler WHERE nr='?' ORDER By nr"


Hvordan er det jeg gør i MySQL for at finde alle poster hvor feltet "nr" er
et tal?

Hvordan er det jeg gør i MySQL for at finde alle poster hvor feltet "nr" er
et tekst?

Hvordan er det jeg gør i MySQL for at finde alle poster hvor feltet "nr" er
en dato?

osv. med hvad sådan en celle nu kan indeholder?



 
 
Nikolaj Hansen (09-03-2005)
Kommentar
Fra : Nikolaj Hansen


Dato : 09-03-05 19:34

Magnus wrote:
> SQL="SELECT * FROM Profiler WHERE nr='?' ORDER By nr"
>
>
> Hvordan er det jeg gør i MySQL for at finde alle poster hvor feltet "nr" er
> et tal?
>
> Hvordan er det jeg gør i MySQL for at finde alle poster hvor feltet "nr" er
> et tekst?
>
> Hvordan er det jeg gør i MySQL for at finde alle poster hvor feltet "nr" er
> en dato?
>
> osv. med hvad sådan en celle nu kan indeholder?
>
>

Du forsøger at give din column tre forskellige domains: et tal (number),
streng (varchar) og dato (date).

Det er meget dårligt database design, da du vil være bundet til den
laveste fællesnævner, en string (varchar).

Prøv at lave 3 columns i stedet, der har sigende navne. Så vil du være i
stand til at skrive:

select * from profiler where date_nr is not null;

Det vil stadig betyde at du har masser af null columns på profiler
tabellen, som også er lidt halvdårligt design.

Du bør i øvrigt aldrig skrive:

select * from foo;

Men

select bar from foo;

Da du så udpeger de columns, der er relevante for dit query. Det er mere
effektivt for sql cachen i dit DBMS.

mvh

Nikolaj

Magnus (10-03-2005)
Kommentar
Fra : Magnus


Dato : 10-03-05 14:51

>> SQL="SELECT * FROM Profiler WHERE action='?' ORDER By action"
>>

Det er fordi jeg har en kolonne med et id nr på en fodboldspiller og en med
en kaldet action. Og action feltet indeholder ne kode som fx. A for
advarsel, U for udvisning osv. men hvis det er et tal/nr så er det en
udskiftning og nummeret referere til den spiller som kom ind istedet.

Derfor vil jeg have en liste over alle udskiftninger og det er jo alle
poster hvor feltet action er et tal?


/Magnus



Nikolaj Hansen (11-03-2005)
Kommentar
Fra : Nikolaj Hansen


Dato : 11-03-05 18:44

Magnus wrote:
> Det er fordi jeg har en kolonne med et id nr på en fodboldspiller og en med
> en kaldet action. Og action feltet indeholder ne kode som fx. A for
> advarsel, U for udvisning osv. men hvis det er et tal/nr så er det en
> udskiftning og nummeret referere til den spiller som kom ind istedet.
Du bør så lave en action tabel, med alle de actions du har eks:
id Action      
------------------
1   Udvisning
2   Advarsel
3   Udskiftning

En tabel, der indeholder spillere:

Id   Spillernavn   Plads
------------------------------
1   Michael Laudrup    9
2   Del Piero    10


Og en relation der imellem (tidspunkt):

SpillerId   ActionId   Tidspunkt
--------------------------------------------
1      2      01-01-99 22:22:22   
2      3      01-01-99 22:23:00


>
> Derfor vil jeg have en liste over alle udskiftninger og det er jo alle
> poster hvor feltet action er et tal?

Select
   a.spillernavn, b.tidspunkt
from
   spillere a,
   actions b,
   tidspunkt c
where
    a.id = c.spillerid
   and b.id = c.actionid
   and c.id = 3;

mvh

Nikolaj Hansen

Nikolaj Hansen (12-03-2005)
Kommentar
Fra : Nikolaj Hansen


Dato : 12-03-05 18:40

Sorry, Det skulle self være

Select
a.spillernavn, b.tidspunkt
from
spillere a,
actions b,
tidspunkt c
where
a.id = c.spillerid
and b.id = c.actionid
and b.id = 3;


mvh

Nikolaj Hansen

Søg
Reklame
Statistik
Spørgsmål : 177459
Tips : 31964
Nyheder : 719565
Indlæg : 6408188
Brugere : 218881

Månedens bedste
Årets bedste
Sidste års bedste