CodeIgniter GROUP_CONCAT et rejoindre
J'essaie de trouver un moyen de rejoindre ces deux tableaux, dont j'ai été capable de le faire, mais si il a trouvé plus d'une valeur qui correspond, il a montré tout à partir de la table de produit nouveau. Maintenant, je suis en train d'utiliser le MySQL group_concat pour être en mesure de dresser la liste de tous tName dans un champ dans le tableau, mais je reçois un message d'erreur avec MySQL:
Numéro D'Erreur: 1064
Vous avez une erreur dans votre syntaxe SQL; consultez le manuel qui correspond à votre versions du serveur MySQL pour la bonne syntaxe à utiliser près de 'PARTIR de (
sp_product
) JOINTURE EXTERNE GAUCHEsp_product_type
SURsp_product_type
.`tCat' à la ligne 2SÉLECTIONNEZ
sp_product
.name
,sp_product
.price
,sp_product
.perm_name
,sp_product
.description
, GROUP_CONCAT(product_type.tName SÉPARATEUR DE (sp_product
) JOINTURE EXTERNE GAUCHEsp_product_type
SURsp_product_type
.tCategory
=sp_product
.type
OÙperm_name
= 'bacon'
$this->db->select('product.name, product.price, product.perm_name, product.description, GROUP_CONCAT(product_type.tName SEPARATOR ',') as product_type.tName');
$this->db->from('product');
$this->db->where('perm_name', $this->uri->segment(2));
$this->db->join('product_type', 'product_type.tCategory = product.type', 'LEFT OUTER');
$query = $this->db->get();
Les idées de ce que je fais de mal?
OriginalL'auteur Claremont | 2012-02-17
Vous devez vous connecter pour publier un commentaire.
Semble problème avec une des citations.
Il devrait être
GROUP_CONCAT(product_type.tName SEPARATOR ",")
Essayer ci-dessous :
false
paramètreselect
- en raison de mauvais protéger algorithme...J'obtiens toujours une erreur: Vous avez une erreur dans votre syntaxe SQL; consultez le manuel qui correspond à votre versions du serveur MySQL pour la bonne syntaxe à utiliser près de 'sp_product
) LEFT OUTER JOIN
sp_product_type" SURsp_product_type
.tCategory
'à la ligne 1OriginalL'auteur
Vous devriez utiliser de fausses comme deuxième paramètre dans votre sélectionnez pour passer échapper:
OriginalL'auteur Mehmed
pas nécessaire de les mentionner comme séparateur virgule(,) dans le groupe concat, en tant que par défaut, il prendra la virgule(,) seulement dans le groupe concat
OriginalL'auteur kekin c chheda
Prendre un coup d'oeil à la
GROUP_CONCAT
documentation:Changer cela:
:
Vous avez mélangé le
'
'produit.nom, produit.prix, produit.perm_name, produit.description, GROUP_CONCAT(product_type.tName SÉPARATEUR ',') product_type.tName');
Essayez ceci:
Alors, est-ce travailler?
Non, je ne pouvais pas obtenir que cela fonctionne
OriginalL'auteur Mosty Mostacho
user319198 était hors d'un bon début, mais sa réponse ne fonctionne pas. Le travail de réponses est comme suit.
Avis, je l'ai enlevé
SEPARATOR ","
et renommé dans le domaine (as product_type.tName'
) à un nom de champ qui n'est pas dans la base de données.Cela a été testé et fonctionne.
OriginalL'auteur FredTheLover
Pour #Claremont, #user319198, #FredTheLover, #Mosty Mostacho
Veuillez garder à l'esprit lors de l'élaboration de tout projet à l'aide de CodeIgniter que pour sélectionner plusieurs données ou en utilisant le composé énoncés dans la requête select de la codeigniter vous devez définir le deuxième paramètre de la requête select. Comme
$this->db->select('(SELECT SUM(de l'entreprise.le montant) DE paiement, dans le cas de l'entreprise.invoice_id=4') amount_paid', FAUX);
Parce que
$this->db->select() accepte un paramètre optionnel. Si vous affectez la valeur FALSE, CodeIgniter ne va pas essayer de protéger votre domaine ou noms de table avec des backticks. Ceci est utile si vous avez besoin d'un composé de l'instruction select.
OriginalL'auteur Haisum Usman
Je pense qu'il devrait être comme ceci:
OriginalL'auteur alisher.abdusattorov
essayez ceci ,en supposant que vous utilisez l'id de trier, utiliser
GROUP_BY
au lieu deORDER_BY
et également utiliserDISTINCT
.. cela fonctionneOriginalL'auteur Reza Rouf