Domanda

Ho qualche database MySQL relazionale con decine di tavoli ... La mia domanda è lungo 1000 ft e scelgono i dati provenienti da quasi tutte le tabelle ... ho anche la mia tabella 'principale', e tutte le altre tabelle si riferiscono a che uno. Quando entro una riga nella mia tabella principale e quando creo tutte le relazioni per quella riga in altre tabelle mia domanda funziona benissimo. Tuttavia, se entro una riga nella tabella principale e in nessun altro ricevo insieme vuoto. Ma mi piacerebbe ottenere almeno le informazioni in mio risultato. O, naturalmente, tutte le informazioni immesse in altre tabelle, a prescindere dal fatto che alcune tabelle non hanno le informazioni per il record (riga) ...

Grazie per l'aiuto!

Aggiornamento:

Non faccio uso di JOIN sintassi e la mia domanda è simile a questo:

$query = "SELECT a.*, b.*, c.*, d.*, e.*, f.*";
$query .= " FROM a, b, c, d, e, f";
$query .= " WHERE a.aID = b.aID";
$query .= " AND b.bID = c.bID";
$query .= " AND b.bID = d.bID";
$query .= " AND b.bID = e.bID";
$query .= " AND b.bID = f.bID";
È stato utile?

Soluzione

La tua domanda è molto vaga per ora, ma molto probabilmente è dovuto al fatto di utilizzare INNER JOINs invece dei LEFT JOINs.

Questa query:

SELECT  *
FROM    main
JOIN    secondary
ON      secondary.main_id = main.id

restituirà nulla se secondary è vuoto.

Questa query:

SELECT  *
FROM    main
LEFT JOIN
        secondary
ON      secondary.main_id = main.id

restituirà almeno un record per ogni record nel main, sostituendo campi secondari con NULLs se non ci sono record corrispondenti nel secondary.

Aggiornamento:

sintassi JOIN implicito si utilizzano (enumerando le tabelle e fornendo le condizioni JOIN nella clausola WHERE) assume INNER JOINs.

Supponendo che a è il tavolo "principale", riscrivere la query come questa:

SELECT  a.*, b.*, c.*, d.*, e.*, f.*
FROM    a
LEFT JOIN
        b
ON      b.aID = a.aID
LEFT JOIN
        с
ON      c.bID = b.bID
LEFT JOIN
        d
ON      d.bID = b.bID
LEFT JOIN
        e
ON      e.bID = b.bID
LEFT JOIN
        f
ON      f.bID = b.bID
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top