porny^n+1
11-04-2007, 16:43
Salve a tutti,
ho un enorme problema con una JOIN abbastanza complessa. Ho le seguenti tabelle:
galleries -> gallery_id, gallery_title, sponsor_id, site_id
site -> site_id, site_name, site_url
sponsors -> sponsor_id, sponsor_name, sponsor_url
links -> link_id, link_url, link_name, sponsor_id, site_id
templates -> template_id, template_desc, sponsor_id, site_id
Tramite browser viene passato un URL che successivamente viene splittato in piu' valori e sitemato in variabili:
http://www.url.com/01/sponsorname/02/sitename/2255/01/01/questa-galleria-fa-schifo
Andando in ordine:
01 -> id sponsor -> $sponsorid
sponsorname -> nome sponsor -> $sponsorname
02 -> id sito -> $siteid
sitename -> nome sito ->$sitename
2255 -> id galleria -> $galleryid
01 -> id template -> $templateid
01 -> link id -> $linkid
Ho la necessita' di eseuire un controllo sui dati inseriti confrontandoli con i dati presenti all'interno del database tenedendo presente che:
- una galleria puo' avere link differenti passati tramite url ma questo link e' valido solo se sponsor_id e site_id della tabella links corrispondono a sponsor_id e site_id della tabella galleries
- una galleria puo' avere template differenti passati tramite url ma questo template e' valido se sponsor_id e site_id della tabella template corrispondono con site_id e sponsor_id della tabella galleris
Io ho abbozzato una query mostruoso ed alquanto inutile credo:
SELECT galleries.gallery_id, galleries.gallery_title, galleries.sponsor_id, galleries.site_id, sponsors.sponsor_id, sponsors.sponsor_name, sites.site_id, sites.site_name, links.link_id, links.link_url, links.sponsor_id, links.site_id, templates.template_id, templates.sponsor_id, templates.site_id
FROM galleries
INNER JOIN sponsors ON galleries.sponsor_id = sponsors.sponsor_id AND sponsors.sponsor_id = $sponsor_id AND sponsor.sponsor
INNER JOIN sites ON galleries.site_id = sites.site_id
INNER JOIN links ON galleries.site_id = links.site_id AND galleries.sponsor_id = links.site_id AND links.link_id = $link_id
INNER JOIN templates ON galleries.site_id = templates.site_id AND galleries.sponsor_id = templates.sponsor_id AND templates.template_id = $template_id
WHERE galleries.gallery_id = $gallery_id AND galleries.gallery_title = '".strtolower($gallery_title_full)."'";
Grazie.
Cordiali saluti.
ho un enorme problema con una JOIN abbastanza complessa. Ho le seguenti tabelle:
galleries -> gallery_id, gallery_title, sponsor_id, site_id
site -> site_id, site_name, site_url
sponsors -> sponsor_id, sponsor_name, sponsor_url
links -> link_id, link_url, link_name, sponsor_id, site_id
templates -> template_id, template_desc, sponsor_id, site_id
Tramite browser viene passato un URL che successivamente viene splittato in piu' valori e sitemato in variabili:
http://www.url.com/01/sponsorname/02/sitename/2255/01/01/questa-galleria-fa-schifo
Andando in ordine:
01 -> id sponsor -> $sponsorid
sponsorname -> nome sponsor -> $sponsorname
02 -> id sito -> $siteid
sitename -> nome sito ->$sitename
2255 -> id galleria -> $galleryid
01 -> id template -> $templateid
01 -> link id -> $linkid
Ho la necessita' di eseuire un controllo sui dati inseriti confrontandoli con i dati presenti all'interno del database tenedendo presente che:
- una galleria puo' avere link differenti passati tramite url ma questo link e' valido solo se sponsor_id e site_id della tabella links corrispondono a sponsor_id e site_id della tabella galleries
- una galleria puo' avere template differenti passati tramite url ma questo template e' valido se sponsor_id e site_id della tabella template corrispondono con site_id e sponsor_id della tabella galleris
Io ho abbozzato una query mostruoso ed alquanto inutile credo:
SELECT galleries.gallery_id, galleries.gallery_title, galleries.sponsor_id, galleries.site_id, sponsors.sponsor_id, sponsors.sponsor_name, sites.site_id, sites.site_name, links.link_id, links.link_url, links.sponsor_id, links.site_id, templates.template_id, templates.sponsor_id, templates.site_id
FROM galleries
INNER JOIN sponsors ON galleries.sponsor_id = sponsors.sponsor_id AND sponsors.sponsor_id = $sponsor_id AND sponsor.sponsor
INNER JOIN sites ON galleries.site_id = sites.site_id
INNER JOIN links ON galleries.site_id = links.site_id AND galleries.sponsor_id = links.site_id AND links.link_id = $link_id
INNER JOIN templates ON galleries.site_id = templates.site_id AND galleries.sponsor_id = templates.sponsor_id AND templates.template_id = $template_id
WHERE galleries.gallery_id = $gallery_id AND galleries.gallery_title = '".strtolower($gallery_title_full)."'";
Grazie.
Cordiali saluti.