Pàgina 1 de 2

Problema SQL

Publicat: dt. set. 08, 2009 14:11
Autor: Dende
Hola!

Estic intentant crear un servei de windows que m'actualitzi unes dades d'una base de dades amb visual basic, però tinc problemes amb aquesta consulta SQL:

Codi: Selecciona’ls tots

SELECT        MAX(temp), hora
FROM            resum_dia
WHERE        (dia = '1/17/2009')
No entenc quin és el problema de la consulta, ja que n'he utilitzat de semblants moltes vegades i no sé perquè ara falla, tot el que dóna són valors NULL. A veure si em podeu ajudar.

Gràcies!

Re: Problema SQL

Publicat: dt. set. 08, 2009 14:59
Autor: Petiso
El problema, es que fas un SQL incorrecte !

No pots fer un MAX() amb una comanda al costat i sense un grup by.

Que vols saber, la temperatura màxima del dia i a quina hora ha estat ? O vols saber la temperatura màxima de cada hora ?

Adéu !

Re: Problema SQL

Publicat: dt. set. 08, 2009 15:38
Autor: Dende
La temperatura màxima del dia i a quina hora. I de la mateixa manera hauré de fer el mateix amb humitat, etc..

Gràcies Petiso.

Re: Problema SQL

Publicat: dt. set. 08, 2009 15:58
Autor: Petiso
Aleshores, jo ho faria de la següent manera: primer de tot agafaria la temp màxiam del dia, i despres consultaria quines hores (per que poden ser varies) ha estat.

Codi: Selecciona’ls tots

SELECT        MAX(temp) FROM            resum_dia  WHERE        (dia = '1/17/2009')
Això ho guardes a una variable (per exemple max_temp) i després:

Codi: Selecciona’ls tots

SELECT       hora    FROM            resum_dia  WHERE        (dia = '1/17/2009') AND temp = max_temp
Segurament es pot fer amb un sol SELECT fent un join i així ..... però weno, es complicar-se la vida :-p

Adéu !

Re: Problema SQL

Publicat: dt. set. 08, 2009 16:34
Autor: Dende
Moltes gràcies Petiso, ara almenys sembla q agafa bé les dades. Ja us diré aviam si funciona bé finalment o no.

Re: Problema SQL

Publicat: dt. set. 08, 2009 16:38
Autor: Petiso
De res .... ja te passaré la factura :-p

Re: Problema SQL

Publicat: dj. set. 10, 2009 14:26
Autor: Dende
Hola!

Ara em surt un error en el PHPMyAdmin. Vaig amb el wampserver 2.0 i no sé a què es deu aquest error.
Busco tal com diu el fitxer log del php però ni existeix, no hi ha res. Si no és possible solucionar-ho m'agradaria saber quins fitxers haig de guardar per tal de restaurar l'estructura d'una taula de la BD.

L'error és:
Imatge

Gràcies

PD: JA VA. S'HA ARREGLAT APARENTMENT SOL :mrgreen:

Re: Problema SQL

Publicat: dc. set. 30, 2009 16:44
Autor: Dende
Hola de nou!

Tinc un altre dubte:

Jo tinc una taula en una BD amb aquests camps entre d'altres: 'dia' i 'hora'.
M'agradaria fer una consulta on introduint-li un dia d'inici, un dia de final, una hora d'inici i una hora de final, em mostri les dades compreses entre aquests paràmetres.

He intentat la següent consulta:

Codi: Selecciona’ls tots

SELECT * FROM taula WHERE ((dia BETWEEN $diainici AND $diafinal) AND (hora BETWEEN $horainici AND $horafinal))
El problema és que només em selecciona les dades que van de l'hora inicial a la final de cada dia comprès entre diainici i diafinal.

No sé si m'he explicat gaire però suposo que poc o molt alguna cosa heu entès.

Gràcies.

Re: Problema SQL

Publicat: dc. set. 30, 2009 16:54
Autor: arakelov
Has de convertir dies i hores a format data, és a dir, construir un datainici="diainici+horainici" i un datafi="diafi+horafi" (ho poso entre cometes perquè hauràs de buscar quina és la funció per fer aquestes conversions i sumes).

Llavors la clàusula WHERE serà "dia+hora" BETWEEN datainici AND datafi (fent el mateix amb les columnes dia i hora).

Jo també espero haver estat entenedor :P

Salut!

Re: Problema SQL

Publicat: dc. set. 30, 2009 17:11
Autor: Petiso
Exacte, la solucio es tindre el dia i l'hora en un camp .... que el SQL ja al te: DATETIME

Aleshores només te caldrà fer:
SELECT * FROM taula WHERE data > data_inici AND data < data_final

data te format:
2009-09-30 12:45:05

Re: Problema SQL

Publicat: dc. set. 30, 2009 19:40
Autor: Dende
Mm... és a dir fer un camp més a l'estructura de la taula.. no hi ha cap altra alternativa?

Gràcies.

Re: Problema SQL

Publicat: dc. set. 30, 2009 20:03
Autor: Petiso
No, no es fer un cap mes ...... es fer un camp dels DOS que tens .... es mes optim !
O sigui .... els camps Dia i hora ->>>>> data

L'altre opció es (no provat)

SELECT * FROM taula WHERE DATE_ADD($dia,INTERVAL $hora HOUR_SECOND) > '$dia_inici $hora_inici AND DATE_ADD($dia,INTERVAL $hora HOUR_SECOND) < '$dia_final $hora_final'

Segueixo pensant ...... que lo mes optim es el primer .... a mes es com es treballa sempre amb SQL .... amb datetime !!

Adéu !

Re: Problema SQL

Publicat: dj. oct. 01, 2009 7:06
Autor: Dende
Ja però per altres consultes que faig a la BD necessito tenir-los separats, sinó portaria molta més feina.

Doncs afegiré aquest nou camp si no hi ha més remei. Vinga gràcies!

Re: Problema SQL

Publicat: dj. oct. 01, 2009 8:17
Autor: arakelov
Dende ha escrit:Doncs afegiré aquest nou camp si no hi ha més remei. Vinga gràcies!
No has d'afegir cap camp, has de calcular-lo durant la consulta!!

Re: Problema SQL

Publicat: dj. oct. 01, 2009 10:19
Autor: Petiso
el MYSQL ja esta preparat per aixo :-p

El dia que noves vulgis la data fas: DATE(camp sql en format datetime) i te torna la data :-)

Passat per aquí, tens les funcions que pugis necessitar explcaides:
http://dev.mysql.com/doc/refman/5.1/en/ ... tions.html

En resum .... en SQL es treballa casi semrpe en datetime, i si necessites al data, s'extrau al moment amb funciona pròpies del mysql.

Adéu !