


Comment supprimer les données en double lors de l'exécution d'une requête de jointure dans thinkphp
Dans le framework ThinkPHP, nous devons souvent effectuer des requêtes d'association multi-tables, parmi lesquelles la requête de jointure est une méthode courante. Cependant, dans les requêtes multi-tables, si aucun traitement n'est effectué, des données en double risquent de se produire. Cet article explique comment supprimer les données en double lors de l'exécution de requêtes de jointure dans ThinkPHP.
- Analyse des problèmes
Lors de l'exécution de requêtes liées à plusieurs tables, nous utilisons généralement le code suivant :
$model = M('table1'); $data = $model->join('table2 ON table1.id=table2.table1_id') ->field('table1.*, table2.*') ->select();
Dans le code ci-dessus, nous utilisons la méthode join pour effectuer des requêtes liées entre deux tables, puis utilisons le champ La méthode spécifie les champs à interroger.
Cependant, étant donné que les données des deux tables sont dupliquées, les données en double apparaîtront également dans les résultats de la requête. Par exemple, les résultats de notre requête peuvent être similaires à ce qui suit :
id | name | age | table1_id | content ----------------------------------------- 1 | John | 20 | 1 | ... 2 | Mary | 22 | 2 | ... 3 | John | 20 | 3 | ... 4 | Bruce | 25 | 1 | ... 5 | Mary | 22 | 5 | ...
Vous pouvez voir que deux données sont dupliquées, à savoir les deux données avec les ID 1 et 3. En effet, elles sont toutes les deux identiques à ceux du tableau2. Les données sont liées.
- Déduplication
Afin de supprimer les données en double, nous pouvons utiliser le mot-clé DISTINCT dans MySQL, par exemple :
$model = M('table1'); $data = $model->distinct(true) ->join('table2 ON table1.id=table2.table1_id') ->field('table1.*, table2.*') ->select();
Dans le code ci-dessus, nous appelons la méthode distinct(true), qui convertira les résultats de la recherche Supprimer dupliquer les données pour obtenir les données non dupliquées souhaitées.
En parallèle, nous pouvons également utiliser la méthode groupe pour supprimer les doublons. Par exemple :
$model = M('table1'); $data = $model->join('table2 ON table1.id=table2.table1_id') ->group('table1.id') ->field('table1.*, table2.*') ->select();
Dans le code ci-dessus, nous appelons la méthode group('table1.id'), qui regroupera les résultats de la requête en fonction du champ id dans la table table1 pour obtenir des données uniques.
- Résumé
Cet article explique comment supprimer les doublons lors de l'exécution de requêtes de jointure dans ThinkPHP, notamment en utilisant des méthodes distinctes et de groupe. Ces méthodes sont très couramment utilisées, en particulier lors de l'exécution de requêtes complexes liées à plusieurs tables. Parallèlement, il faut également noter que l’utilisation de ces méthodes nécessite un certain temps et des ressources informatiques.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

Cet article compare les lignes d'ordinateur portable de Thinkbook et ThinkPad de Lenovo. ThinkPads priorise la durabilité et les performances des professionnels, tandis que les thinkbooks offrent une option élégante et abordable pour un usage quotidien. Les principales différences résident dans la qualité de construction, P

Cet article explique comment prévenir l'injection SQL dans les applications ThinkPHP. Il met l'accent sur l'utilisation des requêtes paramétrées via le constructeur de requête de ThinkPhp, en évitant la concaténation directe de SQL et en implémentant une validation et une désinfection d'entrée robustes. Annonce

Cet article aborde les vulnérabilités ThinkPHP, mettant l'accent sur les correctifs, la prévention et la surveillance. Il détaille la gestion des vulnérabilités spécifiques via des mises à jour, des correctifs de sécurité et une correction de code. Des mesures proactives comme la configuration sécurisée, entrée

Cet article détaille l'installation du logiciel ThinkPHP, couvrant des étapes telles que le téléchargement, l'extraction, la configuration de la base de données et la vérification d'autorisation. Il répond aux exigences du système (version PHP, serveur Web, base de données, extensions), installation commune

Ce didacticiel traite des vulnérabilités courantes ThinkPHP. Il met l'accent sur les mises à jour régulières, les scanners de sécurité (RIPS, Sonarqube, SNYK), l'examen du code manuel et les tests de pénétration pour l'identification et l'assainissement. Les mesures préventives comprennent une sécurisation

Cet article montre la création d'applications de ligne de commande (CLI) en utilisant les capacités CLI de ThinkPhp. Il met l'accent sur les meilleures pratiques telles que la conception modulaire, l'injection de dépendance et la gestion des erreurs robuste, tout en mettant en évidence les pièges communs tels que INSU

Ce guide détaille la connexion de la base de données dans ThinkPhp, en se concentrant sur la configuration via Database.php. Il utilise l'OPD et permet une interaction ORM ou SQL directe. Le guide couvre le dépannage des erreurs de connexion communes, gérant plusieurs connexions, en

Cet article présente ThinkPhp, un cadre PHP gratuit et open source. Il détaille l'architecture MVC de ThinkPhp, les fonctionnalités (routage, interaction de base de données), les avantages (développement rapide, facilité d'utilisation) et les inconvénients (surextraction potentielle, commun
