2013-08-26 2 views
0

J'ai actuellement cette instruction SQL:contenu du tableau incorrect

SELECT p.*,k.name FROM posts AS p 
    LEFT JOIN `post-keywords` AS pk ON p.id = pk.id_post 
    LEFT JOIN keywords AS k ON pk.id_keyword = p.id 
    ORDER BY p.id DESC LIMIT :num,:count 

cependant, il ne fonctionne pas comme prévu. C'est ce que le serveur renvoie:

array(7) { 
    [0]=> 
    array(5) { 
    ["id"]=> 
    string(1) "2" 
    ["title"]=> 
    string(28) "Everything about Internet" 
    ["text"]=> 
    string(41) "Article itself" 
    ["date"]=> 
    string(1) "0" 
    ["name"]=> 
    NULL 
    } 
    [1]=> 
    array(5) { 
    ["id"]=> 
    string(1) "1" 
    ["title"]=> 
    string(16) "Internet" 
    ["text"]=> 
    string(32) "Text text text" 
    ["date"]=> 
    string(10) "1371186330" 
    ["name"]=> 
    string(7) "tag1" 
    } 
    [2]=> 
    array(5) { 
    ["id"]=> 
    string(1) "1" 
    ["title"]=> 
    string(16) "Internet" 
    ["text"]=> 
    string(32) "Text text text" 
    ["date"]=> 
    string(10) "1371186330" 
    ["name"]=> 
    string(7) "tag2" 
    } 
    [3]=> 
    array(5) { 
    ["id"]=> 
    string(1) "1" 
    ["title"]=> 
    string(16) "Internet" 
    ["text"]=> 
    string(32) "Text text text" 
    ["date"]=> 
    string(10) "1371186330" 
    ["name"]=> 
    string(7) "tag3" 
    } 
    [4]=> 
    array(5) { 
    ["id"]=> 
    string(1) "1" 
    ["title"]=> 
    string(16) "Internet" 
    ["text"]=> 
    string(32) "Text text text" 
    ["date"]=> 
    string(10) "1371186330" 
    ["name"]=> 
    string(7) "tag4" 
    } 
    [5]=> 
    array(5) { 
    ["id"]=> 
    string(1) "1" 
    ["title"]=> 
    string(16) "Internet" 
    ["text"]=> 
    string(32) "Text text text" 
    ["date"]=> 
    string(10) "1371186330" 
    ["name"]=> 
    NULL 
    } 
    [6]=> 
    array(5) { 
    ["id"]=> 
    string(1) "1" 
    ["title"]=> 
    string(16) "Internet" 
    ["text"]=> 
    string(32) "Text text text" 
    ["date"]=> 
    string(10) "1371186330" 
    ["name"]=> 
    NULL 
    } 
} 

Comment récupérer un tableau à partir du serveur qui contient plusieurs name champs:

array (5) { 
    ["id"] => 
   string (1) "1" 
   ["title"] => 
   string (16) "Internet" 
   ["text"] => 
   string (32) "text text text" 
   ["date"] => 
   string (10) "1371186330" 
   ["name"] => 
   string (10) "word1" 
   ["name"] => 
   string (10) "word2" 
   ["name"] => 
   string (10) "word3" 
} 
+1

Qu'est-ce que '' vozvraŝal' et Tegami'? – jdepypere

+0

Il ne peut pas y avoir plusieurs entrées avec la même ** clé ** dans un hachage, donc le dernier prend la précendence ... (par exemple si vous avez une colonne "nom" dans plusieurs tables, vous n'aurez qu'une clé dans le hachage) – poncha

+0

retour et mot-clé –

Répondre

1

Actuellement, votre requête est « écraser » les champs qui ont plusieurs entrées avec le même prénom. Par exemple, vous obtenez p.name et k.name. Votre requête ne fait pas de différence, donc elle est écrasée (je présume) k.name.

Pour vous assurer que vous les obtenez à la fois, écrire quelque chose comme: SELECT p.name AS p_name, k.name AS k_name

Questions connexes