2016-06-20 38 views
0

Ich habe ein kleines Problem mit meiner SQL-Anfrage, ich habe viele Themen zu diesem Problem überprüft, aber ich habe nicht gefunden, wie zu lösen.INNERJOIN + SELECT spezifische Spalte

Mein Tisch images und plaquettes bekamen sowohl ‚domaine‘ -Spalte, aber ich will nur von der plaquettes Tabelle auswählen. Diese SQL gibt mir einen FetchAll-Fehler zurück.

Ich weiß nicht, warum dieser einfache INNER JOIN nicht funktioniert. Dank für

<?php 
    $sqlimg = "SELECT *, plaquettes.domaine AS plaquettedomaine FROM images INNER JOIN plaquettes ON images.id = plaquettes.images_id"; 
    $resultsimg = $connexion->query($sqlimg); 
    $plaquettesimg = $resultsimg->fetchAll(PDO::FETCH_OBJ); 

foreach($plaquettesimg as $pimg) { ?> 
<input type="hidden" value="<?php echo $pimg->name ?>" name="delete_img" > 
    <input type="hidden" value="<?php echo $pimg->plaquettedomaine ?>" name="delete_domaine" > 
<?php } ?> 
<button onclick="return confirm('Voulez vous vraiment supprimer cette plaquette ?')" type="submit" class="btn pull-left btn-danger" name="id" id="id" value="<?php echo $p->id ?>">Supprimer</button> 
</form> 
+3

Deklarieren Sie Ihre Tabellen richtig, verwenden Sie nicht SELECT * –

+0

Sie meinen, ich mag 'SELECT images.name AS imgname, plaquettes.domaine AS plaquettedomaine'? – Hightline

+0

Ja, geben Sie das. –

Antwort

2
SELECT *, plaquettes.domaine AS plaquettedomaine FROM images INNER JOIN plaquettes ON images.id = plaquettes.images_id 

helfen soll in etwa so

SELECT p.*, p.domaine AS plaquettedomaine 
FROM 
    images i 
    INNER JOIN plaquettes p 
    ON i.id = p.images_id 

Schuldverschreibung I Tabelle Aliase verwenden, um es einfacher zu folgen und weniger tippen. Um eine Tabelle zu aliasieren, fügen Sie einfach ein Leerzeichen hinter dem Tabellennamen und dem gewünschten Alias ​​ein.

Der Grund, warum Sie alle Spalten erhalten haben, ist "*". Das wird alles für beide Tabellen zurückgeben. Wenn Sie also zu p.* wechseln, beschränken Sie das auf alle Spalten von plaquettes. Beachten Sie, dass es in den meisten Situationen nicht als guter Code gilt, * zu verwenden, da mögliche Änderungen des Schemas in den zugrunde liegenden Tabellen mehr als wahrscheinlich Ihre Anwendung beschädigen. Sie sollten die gewünschten Spalten auflisten. p.Id, p....