Back to top

Autore Topic: Aiuto su SQL Query  (Letto 3456 volte)

Offline Andrit87

  • Appassionato
  • ***
  • Post: 300
  • Sesso: Maschio
    • Mostra profilo
Aiuto su SQL Query
« il: 31 Mag 2012, 00:34:44 »
Salve ragazzi, sto utilizzando su un sito in joomla 1.5.26 ed il componente sql2excel, per creare un file excel contenente dati del DB. il componente mi chiede di scrivere la query da compiere per "costruire" il file excel contenente, ed io ho scritto questo:

Codice: [Seleziona]
SELECT
jos_virtuemart_order_items.created_on,
jos_users.name,
jos_users.email,
jos_virtuemart_order_items.order_item_name,
jos_virtuemart_order_items.product_quantity,
jos_virtuemart_manufacturers_it_it.mf_name,

FROM
jos_users,
jos_virtuemart_order_items,
jos_virtuemart_manufacturers_it_it,
jos_virtuemart_product_manufacturers

WHERE
jos_virtuemart_order_items.virtuemart_product_id  = jos_virtuemart_product_manufacturers.virtuemart_product_id
AND
jos_virtuemart_product_manufacturers.virtuemart_manufacturer_id = jos_virtuemart_manufacturers_it_it.virtuemart_manufacturer_id
AND
jos_virtuemart_order_items.created_by = jos_users.id



in pratica, mi restituisce una lista dei prodotti acquistati tramite il componente  virtuemart, inserendovi la data, il produttore e le altre info che vedete. FINO A QUI FUNZIONA PERFETTAMENTE!

Io vorrei implementare un ulteriore controllo, in pratica in questo modo mi fa vedere la lista di TUTTI gli ordini effettuati, mentre a me interesserebbe la lista degli ordini effettuati in un solo rage di giorni della settimana passata. Ad esempio di tutti gli ordini effettuati da mercoledì a sabato scorso.
Per fare ciò volevo utilizzare la funzione DATEPART, ma evidentemente sbaglio qualcosa.

quello che volevo inserire io è un controllo o a valle o a monte (non so) di questo tipo (la sintassi sarà tutta sbagliata):

Codice: [Seleziona]
IF
DATEPART ( dw, jos_virtuemart_order_items.created_on ) between 3 AND 6
ELSE
.
.
.
.
Resto della query

grazie per l'aiuto!

Offline Murphz

  • Global Moderator
  • Abituale
  • ********
  • Post: 1335
  • Sesso: Maschio
  • Trust No1
    • Mostra profilo
Re:Aiuto su SQL Query
« Risposta #1 il: 31 Mag 2012, 01:12:37 »
La query per i range è:


Codice: [Seleziona]
SELECT * FROM address
WHERE DateTime
BETWEEN DATEADD(ss,-15,'2009-01-31 09:00:00') AND DATEADD(ss,15,'2009-01-31 09:34:34')


Dove DATEADD(datepart, number, date) indica l'unità di misura, la quantità e la data. Dovresti solo aggiungere BETWEEN alla tua query in teoria.


Una query più semplice è:


Codice: [Seleziona]
BETWEEN '2009-01-31 09:00:00' AND '2009-01-31 09:34:34'
Freelance Web & Graphic Design // Twitter

"...Nothing Important Happened Today..."

Offline Andrit87

  • Appassionato
  • ***
  • Post: 300
  • Sesso: Maschio
    • Mostra profilo
Re:Aiuto su SQL Query
« Risposta #2 il: 31 Mag 2012, 09:35:31 »
Intanto grazie per la risposta, ma ho 2 dubbi su quello che mi hai scritto:

1 - select * FROM, mi selezionerebbe TUTTI i record della tabella address?? e quale sarebbe?? i record che interessano a me sono messi quasi tutti in tabelle diverse. Forse dovrei creare una nuova tabella con questi record e lavorare sulla nuova tabella???

2 - DATEADD(datepart, number, date), ma non era datepart anche fuori la parentesi?? cmq non è questo il dubbio. io come data non posso indicare una data fissa, come da te inserita nell'esempio (2009-01-31....), ma la mia data varia da record a record, ed è contenuta nella tabella e nella colonna  << jos_virtuemart_order_items.created_on >> , per cui il mio problema è: come si inserisce la data contenuta in questo campo all'interno della funzione DATEADD??? avevo pensato di dichiarare una variabile... ma non ho ben capito la sintassi :).

Grazie per l'aiuto e scusa se a volte uso termini impropri, come campo, record ecc ma è praticamente da ieri pomeriggio che ho iniziato a lavorare su SQL. sono agli inizi.

Offline Murphz

  • Global Moderator
  • Abituale
  • ********
  • Post: 1335
  • Sesso: Maschio
  • Trust No1
    • Mostra profilo
Re:Aiuto su SQL Query
« Risposta #3 il: 31 Mag 2012, 17:00:19 »
Ma no no, era un esempio la mia query, per farti capire come è utilizzato between. Ovviamente dovrai inserirlo nella tua query e non utilizzare quella.


Che io sappia la sintassi di dateadd è quella, ma penso che un semplice between ti possa bastare ([size=78%]http://www.mysqltutorial.org/sql-between-mysql.aspx[/size]). Io non so cosa devi fare, ti ho messo un esempio anche per le date  ::)  potresti fare anche BETWEEN '$datainizio' AND '$datafine', dove $datainizio e $datafine sono le tue date variabili prese (magari in una query precedente) dalla colonna #__virtuemart_order_items.created_on.



Freelance Web & Graphic Design // Twitter

"...Nothing Important Happened Today..."

Offline Andrit87

  • Appassionato
  • ***
  • Post: 300
  • Sesso: Maschio
    • Mostra profilo
Re:Aiuto su SQL Query
« Risposta #4 il: 31 Mag 2012, 18:33:33 »
il problema è che non ho capito qual'è la sintassi per dichiarare le variabili prese dalle colonne di una tabella. già quello sarebbe un bel passo avanti :)

Offline Andrit87

  • Appassionato
  • ***
  • Post: 300
  • Sesso: Maschio
    • Mostra profilo
Re:Aiuto su SQL Query
« Risposta #5 il: 04 Giu 2012, 11:01:50 »
Forse è meglio che andiamo passo passo.

Prima di tutto mi sapreste indicare la sintassi corretta per dichiarare e settare una variabile di tipo DATATIME che prende i dati direttamente dal DB, dalla tabella jos_virtuemart_order_items e dalla colonna created_on??? facendo ciò poi vediamo il resto dei problemi :)

 



Web Design Bolzano Kreatif