Dans le processus d'utilisation conjointe de PHP et MySQL, il est très important de comprendre comment utiliser la requête de jointure de table. Cependant, comme nous le savons, les jointures rendent l’exécution des requêtes moins efficace.
Alors, existe-t-il un moyen d'effectuer une requête de table conjointe sans utiliser de jointure ? La réponse est oui ! Dans cet article, nous présenterons certaines méthodes de requête de table commune qui n'utilisent pas de jointure et comparerons leurs différences avec l'utilisation de jointure.
Une sous-requête est une instruction de requête imbriquée dans une autre instruction de requête. L'ensemble de résultats de la sous-requête sera traité dans le cadre de l'instruction de requête principale.
Dans une requête de table commune, nous pouvons utiliser des sous-requêtes pour interroger des données dans une autre table. Par exemple, si nous voulons interroger la valeur d’un champ d’une table, mais que cette valeur est un champ d’une autre table, nous pouvons utiliser une sous-requête pour y parvenir.
Par exemple, nous avons deux tables : les utilisateurs et les commandes. Les informations utilisateur sont stockées dans la table des utilisateurs et les informations sur les commandes sont stockées dans la table des commandes. Nous voulons trouver l'adresse de l'utilisateur, mais l'adresse est stockée dans la table des commandes. Nous pouvons utiliser la requête suivante :
SELECT adresse FROM commandes WHERE user_id = (SELECT id FROM utilisateurs WHERE username = 'Bob');
Ici, nous avons utilisé une sous-requête pour obtenir l'identifiant de l'utilisateur, qui est ensuite utilisé dans le requête principale Utilisez cet identifiant pour trouver l'adresse de l'utilisateur.
En PHP, nous pouvons simuler une requête de table commune en stockant les données de deux tables dans deux tableaux associatifs. Par exemple, nous avons deux tableaux : $users et $orders. Nous pouvons concaténer les deux tableaux avec le code suivant :
foreach ($orders as $order) {
$user_id = $order['user_id']; $users[$user_id]['address'] = $order['address'];
}
Ici, nous parcourons le tableau $orders et utilisons $user_id pour obtenir l'enregistrement utilisateur correspondant. Nous utilisons ensuite cet identifiant utilisateur pour stocker l'adresse de la commande dans le tableau $users. En fin de compte, le tableau $users contiendra des informations sur les utilisateurs, ainsi que leurs adresses.
Dans certains cas, vous pouvez utiliser des sous-chaînes et des instructions LIKE pour joindre les données de deux tables. Par exemple, nous avons deux tables : les utilisateurs et les commandes. Il y a un champ nommé email dans la table des utilisateurs et un champ nommé email_domain dans la table des commandes. Nous souhaitons joindre les enregistrements des deux tables en utilisant la requête suivante :
SELECT u., o. FROM utilisateurs u, commandes o WHERE u.email LIKE CONCAT('%', o.email_domain) ;
In Pour cette requête, nous avons utilisé l'opérateur LIKE et la fonction CONCAT. L'opérateur LIKE est utilisé pour faire une correspondance floue du texte, tandis que la fonction CONCAT concatène les chaînes. Nous avons utilisé l'opérateur LIKE et la fonction CONCAT dans la requête pour joindre les données des deux tables.
Résumé
En PHP et MySQL, la requête de jointure de table est une opération très courante. Cependant, la jointure réduira l’efficacité des requêtes. Par conséquent, nous avons introduit trois méthodes pour joindre des tables sans utiliser de jointures : en utilisant des sous-requêtes, en utilisant des tableaux associatifs et en utilisant des sous-chaînes et des instructions LIKE. Ces méthodes ne sont peut-être pas aussi efficaces que la jointure, mais elles peuvent être très utiles dans certaines situations. En fonction de la situation spécifique, nous avons la possibilité de choisir la méthode à utiliser.
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!