inner join

jdj78

Nuovo Utente
2 Giu 2016
12
0
1
42
ciao ho bisogno di aiuto su un codice potreste aiutarmi ?

Vi mostro:


strSQL = "SELECT col.*,imm.* FROM (" & VbCrLf
strSQL = strSQL & "SELECT col.codice FROM colloqui col INNER JOIN immobili imm on cStr(imm.codice)=col.codice " & VbCrLf
strSQL = strSQL & ") " & VbCrLf
strSQL = strSQL & " Group BY col.codice"

Mi da questo errore


Microsoft OLE DB Provider for ODBC Drivers error '80040e14'

[Microsoft][ODBC Microsoft Access Driver] Cannot group on fields selected with '*' (col).

/xxxxEST1.asp, line 1563


finalità nella tabella colloqui è appunto inserito un campo datascadenza , x questo devo visualizzarne l'ordinamento tramite questo




Case "scaUp"
strSQL = strSQL & " ORDER BY col.datascadenza"
Case "scaDown"
strSQL = strSQL & " ORDER BY col.datascadenza DESC"



Grazie in anticipo dell'aiuto a presto
Fabio
 

marino51

Utente Attivo
28 Feb 2013
3.016
174
63
Lombardia
in realtà dal tuo post non capisco bene cosa vuoi fare,

1) ti suggerisco di togliere i caratteri "ritorno a capo" e "nuova linea" (VBcrlf) che inserisci nella query,
la stringa che stai costruendo ha la finalità di una query non di una riga da stampare dove bisogna controllare il posizionamento della stampa

2) stai creando una "select" interna che restituisce il solo codice alla "select" esterna, pretendendo di fare operazioni su colonne che la select esterna non ha (non riceve) e non conosce

3) il "group by" deve essere usato quando vi sono dati raggruppati che non vedo nelle tue select

4) il "group by" deve essere seguito da tutte le colonne che sono elementi di raggruppamento e mal si concilia con "select *"

scriverei molto semplicemente,
"select * from colloqui, immobili where colloqui.codice=immobili.codice order by colloqui.data"

nel caso ci fossere righe uguali che vuoi rendere univoche, puoi usare "distinct"
"select distinct * from ....."

se vuoi l'ordinamento discendente, con un "if", il programma appende "desc" alla stringa della query già compilata
ad essa puoi appendere ulteriori colonne di ordinamento, separate con virgole

p.s. scusa se non ho usato i nomi da te indicati, ma sto scrivendo la risposta "offline"
 

jdj78

Nuovo Utente
2 Giu 2016
12
0
1
42
ok spero di essere + chiaro possibile con un esempio pratico

nel db imm abbiamo tutti i dati dell'archivio con il campo codice che fa da relazione con la tabella col (come hai detto tu possiamo scrivere semplicemente immobili o colloqui )....

ho inserito distinct from pero purtroppo quando voglio andare a rilevare l'ordine decr o cresc del campo datascadenza che si trova sui colloqui.....

grazie intanto per un inizio di aiuto ...... se ti viene in mente qualcosa ti faccio sapere intanto grazie metto in pratica i tuoi suggerimenti
 

jdj78

Nuovo Utente
2 Giu 2016
12
0
1
42
cosi la query te la mostro posso dirti che va...... nessun errore

strSQL = " select distinct col.codice, imm.* from colloqui col, immobili imm where col.codice=cStr(imm.codice) and imm.visione not like 'ESAURITA' "



il problema è sempre quello quando aziono questo ordinamento



Case "scaUp"
strSQL = strSQL & " ORDER BY col.datascadenza"
Case "scaDown"
strSQL = strSQL & " ORDER BY col.datascadenza DESC"


ci da l'errore

Microsoft OLE DB Provider for ODBC Drivers error '80040e07'

[Microsoft][ODBC Microsoft Access Driver] ORDER BY clause (col.datascadenza) conflicts with DISTINCT.

/xxxx.asp, line 1559


cioe va in conflitto con il distinct del codice come possiamo risolvere ?
grazie ancora della disponibilita...
 
Ultima modifica:

jdj78

Nuovo Utente
2 Giu 2016
12
0
1
42
tanto x semplificare questa la situazione che ci presenta nella stampa dei dati appena raggruppati

cod nome data
045 aaa 01/01/15
047 bbb 01/02/14
048 ccc 01/03/13


devo praticamente ordinare la colonna data

in questo sql


strSQL = " select distinct col.codice , imm.* from colloqui col, immobili imm where col.codice=cStr(imm.codice) and imm.visione not like 'ESAURITA' "

cosa devo modificare ????
mi manca davvero poco.....
 

marino51

Utente Attivo
28 Feb 2013
3.016
174
63
Lombardia
strSQL = "
select distinct col.codice, imm.*, col.datascadenza
from colloqui col, immobili imm
where col.codice=cStr(imm.codice)
and imm.visione not like 'ESAURITA'
ORDER BY col.datascadenza
"

Case "scaDown"
strSQL = strSQL & " DESC"
 

jdj78

Nuovo Utente
2 Giu 2016
12
0
1
42
non va.
mi filtra tutti i risultati non raggruppati per codice citando esempio di cui sopra ora è cosi

cod nome data
045 aaa 01/01/15
047 bbb 01/02/14
048 ccc 01/03/11
048 ccc 01/03/12
045 aaa 01/01/15
048 ccc 01/03/13
045 aaa 01/01/15
048 ccc 01/03/09
048 ccc 01/03/04
045 aaa 01/01/15
 

marino51

Utente Attivo
28 Feb 2013
3.016
174
63
Lombardia
strano, molto strano a cominciare dalla data non ordinata
supponendo che la data sia memorizzata nel db come gg/mm/aa, la lista che hai postato non coincide con il risultato che deve dare la query
 

jdj78

Nuovo Utente
2 Giu 2016
12
0
1
42
si ok in realta il risultato viene fuori cosi :

cod nome data
045 aaa 01/03/15
045 aaa 01/02/15
045 aaa 01/01/15
047 bbb 01/02/14
045 aaa 01/01/14
048 ccc 01/03/13
048 ccc 01/03/12
048 ccc 01/03/11
048 ccc 01/03/09
048 ccc 01/03/04

deve pero raggrupparsi cosi

045 aaa 01/03/15
047 bbb 01/02/14
048 ccc 01/03/13

codici raggruppati mi deve dare le ultime date in ordine decrescente

ciao grazie
 

marino51

Utente Attivo
28 Feb 2013
3.016
174
63
Lombardia
anche l'ultimo risultato che hai postato non è coerente con la query, ma ...
al posto di imm.* metti nome specificando la tabella (???.nome) se è presente in entrambe
 

jdj78

Nuovo Utente
2 Giu 2016
12
0
1
42
In che senso nn e coerente ..?????.... posso provare amettere cosi immobili.* ma il ris nn cambia
 

jdj78

Nuovo Utente
2 Giu 2016
12
0
1
42
ti confermo che anche mettendo per intero i nomi delle tabelle mi vengon fuori i risultati ma non raggruppati come se la distinct non la leggesse.......... ordinamento x data vabene ma come ripeto devono raggruppati i codici ed evidenziare qual'è l'ultima data.....
 
Ultima modifica:

jdj78

Nuovo Utente
2 Giu 2016
12
0
1
42
ciao io non sono riuscito a venirne fuori ancora , attendo suggerimenti per completare questa rogna......:(:(
 

marino51

Utente Attivo
28 Feb 2013
3.016
174
63
Lombardia
ultima data = data più recente
Codice:
select col.codice, imm.nome, max(col.datascadenza)
from colloqui col, immobili imm
where col.codice=cStr(imm.codice)
and imm.visione not like 'ESAURITA'
group by col.codice, imm.nome
order by max(col.datascadenza) desc, col.codice
speriamo....
 

jdj78

Nuovo Utente
2 Giu 2016
12
0
1
42
select col.codice, imm.nome, max(col.datascadenza) from colloqui col, immobili imm where col.codice=cStr(imm.codice) and imm.visione not like 'ESAURITA' group by col.codice, imm.nome order by max(col.datascadenza) desc, col.codice


ma imm.nome cos e forse intendi imm.visione??
 

marino51

Utente Attivo
28 Feb 2013
3.016
174
63
Lombardia
ho capito che
vuoi estrarre 3 colonne, "col, nome, data",
solo negli ultimi post parli di "ultima data",
non hai pubblicato le tabelle
è molto difficile inventare una query .... considerato che probabilmente il problema non consiste nella join
 

jdj78

Nuovo Utente
2 Giu 2016
12
0
1
42
eliminando anche il nome
provando con solo 2 colonne cioe codici (raggruppati) e datascadenza (cioe ultima data)


strSQL = "select colloqui.codice, immobili.codice, max(colloqui.datascadenza) from colloqui, immobili where colloqui.codice=cStr(immobili.codice) group by colloqui.codice "


strSQL = strsql & " order by max(colloqui.datascadenza) desc"



mi da questo

Microsoft OLE DB Provider for ODBC Drivers error '80040e14'

[Microsoft][ODBC Microsoft Access Driver] You tried to execute a query that does not include the specified expression 'codice' as part of an aggregate function.

ho sbagliato qualcosa .......
 

marino51

Utente Attivo
28 Feb 2013
3.016
174
63
Lombardia
strSQL = "select codice, max(datascadenza) from colloqui group by codice"
strSQL = strsql & " order by max(datascadenza) desc"
 
Discussioni simili
Autore Titolo Forum Risposte Data
S [PHP] Inner join su 4 tabelle PHP 6
M [PHP] Aiuto su inner join PHP 10
P [MySQL] Inner Join o Left Join MySQL 14
simgia [MySQL] INNER JOIN problema MySQL 0
R [MySQL] SQL UPDATE INNER JOIN MySQL 5
D Problema sintassi INNER JOIN a 3 tabelle PHP 4
L inner join MySQL 0
I Aiuto INNER JOIN MySQL 5
L inner join su due tabelle PHP 5
A Count Inner Join e stampa record con id non duplicati PHP 1
P Inner join ? MS Access 1
L Inner Join con più tabelle PHP 5
A Inner join con tre tabelle PHP 0
c.ronaldo Inner join Database 1
cosov Problema con INNER JOIN Classic ASP 1
S Stampare il risultato di una query inner jon in php.... PHP 4
metalgemini codice dinamico con inner.HTML o cosa? Javascript 8
R Join articolato su 3 tabelle MySQL 5
M Join 3 tabelle PHP 0
L select join e sottrazione punti PHP 13
M Problema su query JOIN in tre tabelle PHP 0
MarcoGrazia Dati nulli su join tra più tabelle MySQL 1
M Ordinare una query join PHP 2
M Estrarre valori MAX da un db con una left join MySQL 8
P Query Mysql con Join PHP 2
F [MySQL] Problema con LEFT JOIN MySQL 6
simgia [PHP] Ciclare una query JOIN PHP 2
R [PHP] Estrapolare dati da una query left join PHP 0
C Php/Mysql query JOIN tra tabelle PHP 4
C Php/Mysql query JOIN tra due tabelle PHP 18
G [MS Access] JOIN di due tabelle più GROUP BY MS Access 1
G [MySQL] Join o select MySQL 1
R [MySQL] Join, Count e Order (ASC & DESC)... MySQL 6
B Outer join che non funge Database 2
V [Guida]: ho dubbi sulle Join MySQL 13
P Query con Somma di un Campo , aggregazione e join Database 3
V Quando mettere il JOIN e quando no? MySQL 1
L cinque tabelle e join PHP 2
P Join tabelle MySQL 4
Marco_88 Select distinct e join MySQL 2
Marco_88 Eliminare una colonna da una LEFT JOIN MySQL 4
M Query Join per 2 colonne MySQL 1
andrea.peo Problema query con join visualizzazione record ripetuti PHP 5
D Il JOIN che non imparerò mai ad usare MySQL 2
V Problema JOIN SQL PHP 3
A Ottimizzare di più JOIN su tabella/e da 25.000 records MySQL 0
S Mistero Join MySQL 0
G unire union e join insieme MySQL 7
ivarello JOIN Mysql PHP 2
P utilizzare INN JOIN PHP 8

Discussioni simili