Problema con un query access

domenica 23 novembre 2008 - 13.40

luxsor Profilo | Guru

Ciao a tutti, ho il seguente problema con una query access:
ho bisogno di prelevare da 2 tabelle (immobili e foto) i campi (immobili.id, foto.idfoto e foto.file).
La tabella (immobili) ha come chiave primaria id, invece la seconda tabella (foto) ha il campo id integer come riferimento al campo immobile.id

Ho bisogno di prelevare 3 record nella tabella Immobili e associare al singolo record i campi delle tabella foto(idfoto, file) corrispondenti a quel immobile.id


lbenaglia Profilo | Guru

>ho bisogno di prelevare da 2 tabelle (immobili e foto) i campi
>(immobili.id, foto.idfoto e foto.file).
>La tabella (immobili) ha come chiave primaria id, invece la seconda
>tabella (foto) ha il campo id integer come riferimento al campo
>immobile.id

Ciao Carmelo,

Non devi fare altro che eseguire una INNER JOIN tra le due tabelle:

SELECT I.id, F.idfoto, F.file FROM immobili AS I INNER JOIN foto AS F ON I.id = F.id WHERE...;

Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org

luxsor Profilo | Guru

Scusa Lorenzo, forse mi sono espresso male io.
Ho due tabelle

immobili foto
[id] [idfoto] [file]
1 1 image/foto1.jpg
2 1 image/foto2.jpg
3 1 image/foto3.jpg
2 image/foto4.jpg
3 image/foto5.jpg
La mia esigenza è quella di prelevare per ogni immobile.id una sola foto corrispondente all'indice foto.idfoto
In sostanza la mia query mi dovrebbe ottenere questo:

immobile foto
[id] [idfoto] [file]
1 1 image/foto1.jpg
2 2 image/foto4.jpg
3 3 image/foto5.jpg

lbenaglia Profilo | Guru

>Scusa Lorenzo, forse mi sono espresso male io.
>Ho due tabelle
>
>immobili foto
>[id] [idfoto] [file]
>1 1 image/foto1.jpg
>2 1 image/foto2.jpg
>3 1 image/foto3.jpg
> 2 image/foto4.jpg
> 3 image/foto5.jpg

E questa cosa sarebbe, Immobili o Foto?
Ascolta, posta l'mdb e spiega dettagliatamente quale result set vuoi ottenere con i dati di esempio, altrimenti non ne usciamo.

Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org

luxsor Profilo | Guru

Sto creando un sito web, su un immobiliare, è nella home page dovrei fai comparire una foto, degli ultimi 3 immobili inseriti nel database.
Nella tabella immobile ho inserito tutti i dati dell'immobile, inceve nella tabella foto, ho inserito tutte le foto dei rispettivi immobili, perchè ogni immobile può inserire più foto per lo stesso immobile. Quindi mi servirebbe usa query che:
- legge gli ultimi 3 immobili inseriti nel database dalla tabella [IMMOBILE]
- poi di questi 3 immobili, mi deve prelevare dalla tabella [FOTO] una sola foto (anche la prima va bene) riferita a quel immobile.

Grazie Lorenzo

lbenaglia Profilo | Guru

>Nella tabella immobile ho inserito tutti i dati dell'immobile,
>inceve nella tabella foto, ho inserito tutte le foto dei rispettivi
>immobili, perchè ogni immobile può inserire più foto per lo stesso
>immobile.

Allora, la tabella Foto ha la colonna idfoto duplicata, inoltre non ha alcuna PK.
Le tabelle Immobile e Foto non hanno alcuna relazione di FK.

Che ne dici se iniziamo a sistemare lo schema del db?

Se ho capito bene idfoto in realtà è idimmobile e su questa colonna va definito un constraint di FK, poi dobbiamo aggiungere una PK alla tabella foto, ad esempio aggiungendo la colonna idfoto autonumber, confermi?

--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org

luxsor Profilo | Guru

>Che ne dici se iniziamo a sistemare lo schema del db?
Quello che tu dice per me è legge

>Se ho capito bene idfoto in realtà è idimmobile e su questa colonna va definito un constraint di FK, poi >dobbiamo aggiungere una PK alla tabella foto, ad esempio aggiungendo la colonna idfoto autonumber, >confermi?
Sono nelle tue mani

lbenaglia Profilo | Guru

>>Che ne dici se iniziamo a sistemare lo schema del db?
>Quello che tu dice per me è legge
Ora esagera

>>Se ho capito bene idfoto in realtà è idimmobile e su questa colonna va definito un constraint di FK, poi >dobbiamo aggiungere una PK alla tabella foto, ad esempio aggiungendo la colonna idfoto autonumber, >confermi?
>Sono nelle tue mani

OK, ho modificato la tabella foto come detto in precedenza, ho stabilito una relationship tra le due tabelle e ho preparato la Query qryGetFoto con la seguente SELECT:

SELECT TOP 3 F.idfoto, Q.* FROM foto AS F INNER JOIN ( SELECT idImmobile, MIN(file) AS MinFile FROM foto GROUP BY idImmobile ) AS Q ON F.idImmobile = Q.idImmobile AND F.file = Q.MinFile ORDER BY Q.idImmobile DESC;

In allegato troverai il db riveduto e corretto.

Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org

luxsor Profilo | Guru

Grazie 1000 Lorenzo, sei un grande.
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5