Aiuto INNER JOIN

iuta74

Nuovo Utente
29 Apr 2014
24
0
0
Ciao a tutti,

vi chiedo gentilmente un aiuto per quanto segue: ho 4 tabelle così strutturate

ORDINI
- datainserimento
- idagente
- codicearticolo
- dataconsegna
- quantita

GRUPPI
- codicegruppo
- descrizionegruppo

FORNITORI
- codicefornitore
- descrizionefornitore
- codicegruppo

ARTICOLI
- codicearticolo
- codicefornitore
- codicegruppo

Mi aiutate per favore a creare la corretta SELECT con relative INNER JOIN per ottenere un layout di questo tipo con WHERE su codicearticolo dalla tabella ORDINI?

Data Inserimento(ORDINI) - - Descrizione Gruppo(GRUPPI) - - Descrizione Fornitore(FORNITORI) - - Data di Consegna(ORDINI)

Grazie
 

marino51

Utente Attivo
28 Feb 2013
3.203
207
63
Lombardia
ciao

Codice:
select 
 ordini.datainserimento
,gruppi.descrizionegruppo
,fornitori.descrizionefornitore
,ordini.dataconsegna
from ordini,articoli,fornitori,gruppi
where ordini.codicearticolo = ?
and articoli.codicearticolo = ordini.codicearticolo
and fornitori.codicefornitore = articoli.codicefornitore
and gruppi.codicegruppo = articoli.codicegruppo
order by quello che è ragionevole

non ho provato la select, ma confido che funzioni,
ho preferito specificare tutti i campi con il nome della relativa tabella

ma .... dalla struttura che hai postato sembra ci sia un legame univoco tra
articoli gruppi e fornitori
ovvero un articolo appartiene ad un solo gruppo e
può essere fornito da un unico fornitore,

se ciò non fosse confermato, manca qualche legame ....

ciao
Marino

in omaggio le JOIN ..... SQL SERVER_Introduction to JOINs.jpg
 
Ultima modifica:

iuta74

Nuovo Utente
29 Apr 2014
24
0
0
Grazie Marino,

ottimo anche lo schema che mi hai postato per semplificarmi il concetto. In merito alla tua domanda di chiarimento, è corretto quello che sostieni. Un codice appartiene ad un solo gruppo e può essere fornito da un solo fornitore. Grazie ancora. Adesso la provo!
 

iuta74

Nuovo Utente
29 Apr 2014
24
0
0
Ciao Marino, la query funziona perfettamente con la WHERE sull'articolo.

Qualora invece volessi estrarre gli stessi dati, ma senza la where sull'articolo? Mi spiego meglio... la query mi servirebbe per un'applicazione che ho creato in php e, mediante una pagina di ricerca, un utente potrebbe cercarsi tutti gli ordini che ha inserito nel corso del tempo.
Nei vari campi di filtro (o di WHERE) potrebbe interrogare (o lasciare in bianco) per data inserimento (tabella ORDINI), per descrizione fornitore (tabella FORNITORI), per descrizione gruppo (tabella GRUPPI) piuttosto che per codice articolo (tabella ARTICOLI).
Queste informazioni non le avevo scritte perché pensavo che fosse sufficiente aggiungere tutte le altre WHERE (utilizzando IS NOT NULL quando il filtro viene lasciato in bianco) per far funzionare la tua query.

Invece la query che mi hai postato, funziona perfettamente solo se filtro per articolo, altrimenti non estrae tutti i dati correttamente.

Es. nella tabella ordini ho inserito in data "2014-04-23" il codice "505050" che fa parte del sottogruppo "CD", del fornitore "PIPPO",il codice "606060" sempre del fornitore "PIPPO" ma del sottogruppo "DVD" e infine il codice "707070" ancora del fornitore "PIPPO" e sottogruppo "CD". In data "2014-04-27" ho inserito ancora il codice "505050". La data di consegna viene calcolata automaticamente dal sistema (7gg dopo la data d'inserimento).
Quello che mi aspetterei di vedere con la mia SELECT (qualora l'utente non utilizzasse alcun filtro) è un risultato di 3 righe:

2014-04-23 - - CD - - PIPPO - - 2014-04-30
2014-04-23 - - DVD - - PIPPO - - 2014-04-30
2014-04-27 - - CD - - PIPPO - - 2014-05-04

Spero di essere stato sufficientemente esauriente. Grazie ancora
 

marino51

Utente Attivo
28 Feb 2013
3.203
207
63
Lombardia
ciao,

mi pare di capire che vuoi un raggruppamento di tutti gli articoli x codicegruppo e data di acquisto
che puoi ottenere con la query,

Codice:
select 
 ordini.datainserimento
,gruppi.descrizionegruppo
,fornitori.descrizionefornitore
,ordini.dataconsegna
from ordini,articoli,fornitori,gruppi
where articoli.codicearticolo = ordini.codicearticolo
and fornitori.codicefornitore = articoli.codicefornitore
and gruppi.codicegruppo = articoli.codicegruppo
group by
 ordini.datainserimento
,gruppi.descrizionegruppo
,fornitori.descrizionefornitore
,ordini.dataconsegna
order by quello che è ragionevole

puoi poi modificare la riga

Codice:
where articoli.codicearticolo = ordini.codicearticolo

con

Codice:
where ordini.codicearticolo = ?
and articoli(gruppi).codicegruppo = ?
....
...
and articoli.codicearticolo = ordini.codicearticolo

io costruii una select in questo modo per inserire le diverse possibilità di ricerca dell'utente

PHP:
  $sql.= " from tabella";

  $x = " where ";
  if ($campo1)	{ $sql.= $x."campo1 like '%".$campo1."%'"; $x = " and "; }
  if ($campo2)	{ $sql.= $x."campo2="       .$campo2;      $x = " and "; }
  if ($campo3)	{ $sql.= $x."campo3 like '%".$campo3."%'"; $x = " and "; }
  if ($campo4)	{ $sql.= $x."campo4 like '%".$campo4."%'"; $x = " and "; }
  if ($campo5)	{ $sql.= $x."campo5='"      .$campo5."'";  $x = " and "; }
  if ($campo6)	{ $sql.= $x."campo6='"      .$campo6."'";  $x = " and "; }
  if ($campo7)	{ $sql.= $x."campo7="       .$campo7;      $x = " and "; }

  $sql.= " order by campo7,campo1";

$x parte con la clausola where e poi viene sostituita da "and" per poter inserire le condizioni successive
se non ci fosse nessuna condizione, where non è inserita

spero abbia interpretato bene il tuo pensiero
ciao
Marino
 
Ultima modifica:
Discussioni simili
Autore Titolo Forum Risposte Data
M [PHP] Aiuto su inner join PHP 10
E Aiuto per query PHP 8
R Aiuto ripristino sito web Presentati al Forum 0
L Aiuto con DataGridView Visual Basic 1
F Aiuto! cambio immagine di sfondo al cambio pagina HTML e CSS 2
I aiuto urgente per thunderbird Posta Elettronica 0
I aiuto per outlook Posta Elettronica 0
D aiuto funzioni javascript Javascript 1
T aiuto per trasformare un quiz fatto in JS in un quiz in JQUERY jQuery 0
D Aiuto CSS in ELEMENTOR - Cambiare un testo CMS (Content Management System) 0
M Fullcalendar in Codeigniter, un aiuto per la chiamata $ajax ? jQuery 0
K Aiuto con file audio in html HTML e CSS 1
G Script notifiche dekstop aiuto Javascript 0
P Aiuto per rendere un Bot Telegram Privato PHP 1
M Un aiuto da chi ha apple Mac e Software 0
P Richiesta di aiuto Presentati al Forum 1
A Aiuto per pagina php PHP 0
M Questa pagina non carica correttamente Google Maps: aiuto!! HTML e CSS 1
I Aiuto php Dependent Lookup PHP 0
R Aiuto con le query MS Access 2
M AIUTO ESERCIZIO JAVA Javascript 1
G Aiuto con htaccess e rewriterule PHP 0
T cercasi aiuto per file d1 (open-edge db) Database 0
M Aiuto con inserimento immagini WordPress 6
D aiuto schermata photoshop Photoshop 0
L Aiuto per programma web php/mySQL PHP 2
A Aiuto php colore diverso PHP 10
L Aiuto creazione menu mancante WordPress 0
C Aiuto compiuto scuola PHP/MySQL PHP 2
G Insert into select - Aiuto MySQL 0
I Aiuto bash linux Programmazione 1
F Aiuto java script Javascript 2
R Cerco aiuto Offerte e Richieste di Lavoro e/o Collaborazione 7
I Aiuto query MySQL 8
G Aiuto HTML, collegamento con un bottone a una <div> di un' altra pagna HTML e CSS 5
motleyrulez Aiuto con un ciclo PHP 0
R Aiuto sito html Offerte e Richieste di Lavoro e/o Collaborazione 3
claudio_lorenzo [Javascript] aiuto su jquery per calcolo altezze dom Javascript 1
G Mi dite come faccio? Aiuto photoshop ? Photoshop 1
C prestashop paragamento contrassegno aiuto modulo E-Commerce 0
Michelebozzo [PHP] Rimuovere pubblicazione nome pagina ... aiuto! PHP 7
Caldus richiesta aiuto Mac e Software 0
R [Javascript] Aiuto su questo script Javascript 2
Z Gestionale in Php/mysql: Quanto farsi pagare? Aiuto! Discussioni Varie 0
Giacomo92 [HTML] AIUTO!! Regular Expression :( Offerte e Richieste di Lavoro e/o Collaborazione 15
T Aiuto per php7 e mysqli PHP 3
T mysql tutorial per importare tabelle access in mysql aiuto MySQL 2
K [Java] aiuto switch case Java 1
E salve tutti spero si essere di aiuto e di trovare aiuto Presentati al Forum 2
D [MS Access] aiuto non riesco a capire MS Access 6

Discussioni simili