0
votes

Quertiser une ligne distincte dans le constructeur de requêtes

J'ai une table comme celle-ci:

 Entrez la description de l'image ici

Je veux obtenir une ligne distincte à partir de ceci. J'utilise: xxx

mais cela donne toujours le résultat avec 3 lignes. Je m'attendais à 2 rangées.

Comment puis-je résoudre ce problème?


4 commentaires

Chaque ligne est distincte et donc le -> distinct () vous donne un résultat correct. Vous voulez distinct par rapport à la colonne?


Je veux distinct avec la colonne Product_id. Mais quand je mets product_id à une fonction distincte, cela me donne toujours 3 colonnes


OK, utilisez-vous des modèles Eloquent ? Si oui, quel est le nom du modèle pour dmspro_mys_campaign_product ? En outre, comment les autres valeurs de colonne seraient-elles si vous voulez des produits distincts?


Je crée un nouveau post pour une description clairement. J'espère que tu m'aides: Stackoverflow.com/questions/58216579/...


4 Réponses :


1
votes

transmettez simplement le nom du champ à l'intérieur de la fonction distincte. comme ceci (au cas où si vous voulez distinct basé sur la colonne 'Compeign_Code')

DB::table('dmspro_mys_campaign_product')->distinct('compeign_code')->get();


2 commentaires

Mon campagne_code est différent de chaque rangée. J'ai essayé mettre produit_id dans une fonction distincte, mais cela me donne toujours 3 rangées


Comme vous pouvez le constater que le champ ID est différent dans chaque ligne. Donc, dans de tels cas, vous devrez utiliser la méthode de sélection. Voir ma réponse mise à jour



1
votes

À mon avis, la réponse est correcte. Les rangées de district vous donnent les résultats où chaque ligne est unique. Comme il existe de légères variations entre les trois rangées, vous obtenez les trois, car aucune ligne n'est exactement égale à une autre rangée.

J'espère que je pourrais aider, Sebastian


1 commentaires

Oh je l'ai. Merci pour votre réponse!



1
votes

Vous avez besoin d'une valeur distincte de dmspro_mys_campaign_product code> Table de la section Donc, la requête de base de données a besoin de la colonne Pass de la colonne.

DB::table('dmspro_mys_campaign_product')->distinct('product_id')->get();


3 commentaires

J'ai essayé mettre produit_id dans une fonction distincte, mais cela me donne toujours 3 rangées


@Tomato Vous devez utiliser Sélectionner ('product_id') méthode dans votre requête de DB.


Mais cela donnera à ma seulement 1 colonne. De toute façon pour obtenir toute la colonne avec produit distinct_id



1
votes

Vous devez simplement mentionner le nom de la colonne dans distinct ('Compeign_Code') CODE>.

DB::table('dmspro_mys_campaign_product')->distinct()->select('product_id');


5 commentaires

Mon campagne_code est différent de chaque rangée. J'ai essayé mettre produit_id dans une fonction distincte, mais cela me donne toujours 3 rangées


Si j'ajoute SELECT, cela ne me donnera qu'une colonne. Quoi qu'il en soit pour obtenir une ligne avec une colonne distincte


J'ai mentionné si vous utilisez SELECT, vous n'obtiendrez qu'une seule colonne


Pardon! J'essaie votre deuxième requête avec le groupe par. J'ai eu une erreur d'erreur: erreur de syntaxe ou violation d'accès: 1055 'test.dmspro_mys_camaign_product.campaign_id' n'est pas en groupe par (SQL: Sélectionnez Distinct * à partir de dmspro_mys_campaign_product Groupe par product_id


Stackoverflow.com/questions/41571271/... Voir ceci pour le groupe par