Problema SQL JOIN e stampa dati

  • Creatore Discussione Creatore Discussione Emix
  • Data di inizio Data di inizio

Emix

Utente Attivo
15 Feb 2010
596
0
16
Salve a tutti... Vi illustro il problema...

Io ho un DB contenente X tabelle e nel caso specifico me ne servono solamente tre.

Il database si chiama Anagrafiche.

Le tabelle si chiamano As Articoli; As Sedi; Clienti;

Cominciamo col dire che dovrei gestire in PHP il database ACCESS.

Il campo in comune a tutti è : Cliente (tabella clienti) - Cod cliente (tabella as sedi e as articoli)

Io devo estrapolare dalla tabella clienti i campi: Ragione sociale e Telefono;
dalla tabella As Articoli: matricola,data visita programmata,descrizione;
e dalla tabella As Sedi: ubicazione esercizio;

Il campo di ricerca è un intervallo di date, nel caso specifico devo confrontare tra la data odierna e una data inserita da me;
Esempio: Data di oggi 19/09/2012 nell'intervallo tra la data (inserita da me) 01/01/2011.

La query che avevo pensato è composta cosi:

SELECT ragione sociale,telefono,ubicazione esercizio,matricola,descrizione,data visita

FROM Clienti,As Articoli,As Sedi

WHERE cliente.codice = as articoli.cod cliente

AND as articoli.cod cliente = as sedi.cod cliente

AND as articoli.data revisione < "20121909" && > "%data inserita%";

Pensate che possa funzionare? Sbaglio qualcosa?

Grazie, Emiliano.
 
ciao
non uppare a così breve distanza.
comunque mi sembra che ci sia qualcosa che non va. guardo meglio e poi ti so dire (salvo intervenga qualcun altro prima)
 
ciao,
a me non convince questa
Codice:
FROM Clienti,As Articoli,As Sedi
non dovrebbe essere cosi?
Codice:
FROM Clienti as C, Articoli as A, Sedi as S

e poi non credo si possano usare spazi nei nomi dei campi
Codice:
SELECT ragione sociale

cmq io preferisco l'altra sintassi per le JOIN

Codice:
SELECT *
FROM tabella1 T1
JOIN tabella2 T2 ON T1.id = T2.id
JOIN tabella3 T3 ON T3.id = T2.id
WHERE T1.campo = "valore" && T3.campo = "valore"

mi sembra più ordinata ma è un mio parere
 
ciao,
a me non convince questa
Codice:
FROM Clienti,As Articoli,As Sedi
non dovrebbe essere cosi?
Codice:
FROM Clienti as C, Articoli as A, Sedi as S

e poi non credo si possano usare spazi nei nomi dei campi
Codice:
SELECT ragione sociale

cmq io preferisco l'altra sintassi per le JOIN

Codice:
SELECT *
FROM tabella1 T1
JOIN tabella2 T2 ON T1.id = T2.id
JOIN tabella3 T3 ON T3.id = T2.id
WHERE T1.campo = "valore" && T3.campo = "valore"

mi sembra più ordinata ma è un mio parere

Eh anche io userei la sintassi da te citata... però io i valori nel DB li ho separati... è un db di un cliente non posso stravolgerlo...
 
da quel che so io se ci sono spazi nei campi si usano le parentesi quadre del tipo [Ragione sociale].. Vi risulta??
 
Scusa Criric ma seguendo il tuo esempio di join mi perdo...

nel senso.. facendone uno con i dati che ho...

Codice:
SELECT *
FROM Clienti T1
JOIN As Articoli T2 ON T1.clienti = T2.codice clienti
JOIN As Sedi T3 ON T3.codice clienti = T2.codice clienti

Qui a questo punto io dovrei fare in modo che T2.data revisione è < "%valore inserito prima%" && > "%valore inserito prima%"
come codifico tutto ciò?

Fatta la query io dovrei stampare a video tabulato i campi che mi servono... Avevo

PHP:
echo($recordset->Fields['Ragione Sociale']->value."".$recordset->Fields['Telefono']->value."".$recordset->Fields['Descrizione']->value".$recordset->Fields['Matricola']->value."".$recordset->Fields['Data visita programmata']->value."".$recordset->Fields['Ubicazione sede riga 3']->value."
");
 
Intanto non si capisce quali lettere MAIUSCOLE o MINUSCOLE sono corrette, il campo 'Codice' (per esempio) è diverso da 'codice'.
Prova con:
Codice:
SELECT ragione sociale,telefono,ubicazione esercizio,matricola,descrizione,data visita

FROM (Clienti INNER JOIN As Articoli ON Clienti.cliente = As Articoli.Cod cliente) INNER JOIN As Sedi ON Clienti.cliente = Ad Sedi.Cod cliente

WHERE  As articoli.data revisione BETWEEN #20/12/1909# AND "%data inserita%";

Ovviamente modifica con le maiuscole e minuscole dei nomi dei campi e delle tabelle del db.
 
da quel che so io se ci sono spazi nei campi si usano le parentesi quadre del tipo [Ragione sociale].. Vi risulta??
a me non risulta

la join piu o meno cosi nota che non avevo messo as davanti alle tabelle
Codice:
SELECT *
FROM Clienti C
JOIN Articoli A ON C.clienti = A.codiceClienti
JOIN Sedi S ON S.codiceClienti = C.clienti  
WHERE A.dataRevisione BETWEEN 'datainserita' AND CURDATE()
 
Salve,
ho effettuato delle prove ma non mi viene stampato nulla.. aiutatemi a capire pls.. vi scrivo intera pagina php

PHP:
<?
$percorso_database = realpath("C:\Users\Tecnici\Desktop\PROVA ZEUS\Anagrafiche.mdb");
$connessione = new COM("ADODB.Connection");
$stringa_di_connessione = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=".$percorso_database;
$connessione->Open($stringa_di_connessione);
$interrogazione = 
"SELECT Codice, Ragione Sociale, Telefono Ufficio, Ubicazione sede riga 3, Matricola, Descrizione, Data visita programmata, Codice Cliente

FROM (Clienti INNER JOIN As Articoli ON Clienti.Codice = As Articoli.Codice Cliente) INNER JOIN As Sedi ON Clienti.Codice = Ad Sedi.Codice cliente

WHERE Cliente.Codice = As Articoli.Codice Cliente

AND As Articoli.Codice Cliente = As Sedi.Codice cliente

AND As Articoli.Data visita programmata < "%datainizio%" && > "%datafine%";"

$recordset = new COM("ADODB.Recordset");
$recordset->Open($interrogazione,$connessione);
/* Ciclo per recuperare i valori dal recordset
EOF= tutto il set di dati è stato esaminato 
e il cursore è giunto in fondo */
while(!$recordset->EOF){
echo($recordset->Fields['Ragione Sociale']->value."".$recordset->Fields['Telefono']->value."".$recordset->Fields['Descrizione']->value".$recordset->Fields['Matricola']->value."".$recordset->Fields['Data visita programmata']->value."".$recordset->Fields['Ubicazione sede riga 3']->value."
");"

$recordset->MoveNext() ;
}

/* Chiusura Recordset (da non farsi nelle query di comando) */
$recordset->Close() ;

/****
Chiudo la connessione
e libero la memoria
****/
$connessione->Close() ;
$connessione->Release() ;
$connessione= null ;
?>
 
ciao
mannaggia è acces, quindi non lo conosco, l'unica cosa che posso dirti è di controllare gli apici alla riga
PHP:
<?php
echo($recordset->Fields['Ragione Sociale']->value."".$recordset->Fields['Telefono']->value."".$recordset->Fields['Descrizione']->value."".$recordset->Fields['Matricola']->value."".$recordset->Fields['Data visita programmata']->value."".$recordset->Fields['Ubicazione sede riga 3']->value."
");
?>
se quardi quello che hai postato vedi delle parti rosse che non dovrebbero essere rosse
 

Discussioni simili