Requêtes multi tables SQL
WDAssos
Messages postés
59
Date d'inscription
Statut
Membre
Dernière intervention
-
ndsaerith Messages postés 308 Date d'inscription Statut Membre Dernière intervention -
ndsaerith Messages postés 308 Date d'inscription Statut Membre Dernière intervention -
Salutations,
Je cherche à effectuer une requête simple sur 3 tables d'une Base SQL (un moteur de recherche simple).
Pour cela, j'utilise un formulaire HTML, qui doit interroger les 3 bases "Ordinateurs", "Consoles" et "Jeux" sur un mot clef à rechercher dans les champs "Modele" des tables "Ordinateurs" ou "Consoles" ou "Titre" de la table "Jeux".
Le problème est que les champs diffèrent donc selon la table.
J'ai essayé :
"Erreur SQL !
select * FROM Ordinateurs, Consoles, Jeux WHERE Jeux.Titre like '%atmos%' OR Ordinateurs.Modele like '%atmos%' OR Consoles.Modele like '%atmos%'
MySQL client ran out of memory"
Ou ai-je donc cafouillé ? Je ne suis pas un pro. du tout...
A vous lire...
Je cherche à effectuer une requête simple sur 3 tables d'une Base SQL (un moteur de recherche simple).
Pour cela, j'utilise un formulaire HTML, qui doit interroger les 3 bases "Ordinateurs", "Consoles" et "Jeux" sur un mot clef à rechercher dans les champs "Modele" des tables "Ordinateurs" ou "Consoles" ou "Titre" de la table "Jeux".
Le problème est que les champs diffèrent donc selon la table.
J'ai essayé :
$requet = "select * FROM Ordinateurs, Consoles, Jeux WHERE Jeux.Titre like '%$rch%' OR Ordinateurs.Modele like '%$rch%' OR Consoles.Modele like '%$rch%'";Mais cela mouline trois plombes pour me sortir enfin :
"Erreur SQL !
select * FROM Ordinateurs, Consoles, Jeux WHERE Jeux.Titre like '%atmos%' OR Ordinateurs.Modele like '%atmos%' OR Consoles.Modele like '%atmos%'
MySQL client ran out of memory"
Ou ai-je donc cafouillé ? Je ne suis pas un pro. du tout...
A vous lire...
A voir également:
- Requêtes multi tables SQL
- Tables des matières word - Guide
- Youtube multi downloader - Télécharger - Conversion & Codecs
- Sfr multi - Accueil - Opérateurs & Forfaits
- Requête sql pix - Forum Python
- Logiciel sql - Télécharger - Bases de données
8 réponses
Bonjour,
Je vois pas en quoi un "Out of memory" n'est pas assez explicite...
T'as tables sont grosses par rapport à ton architecture ?
Je vois pas en quoi un "Out of memory" n'est pas assez explicite...
T'as tables sont grosses par rapport à ton architecture ?
Je pense que c'est la requête qui n'est pas bonne dans sa nomenclature.
Les mêmes tables, interrogées via d'autres requêtes, répondent individuellement très rapidement. Ils y a moins de 1500 entrées par tables.
Les mêmes tables, interrogées via d'autres requêtes, répondent individuellement très rapidement. Ils y a moins de 1500 entrées par tables.
Salut,
Si tu n'as pas besoin de récupérer tous les champs des tables, il est conseillé de définir explicitement les champs à récupérer dans la clause SELECT plutôt que d'utiliser le sélecteur *. Ça permettra d'économiser un peu de mémoire.
Bonne journée
Si tu n'as pas besoin de récupérer tous les champs des tables, il est conseillé de définir explicitement les champs à récupérer dans la clause SELECT plutôt que d'utiliser le sélecteur *. Ça permettra d'économiser un peu de mémoire.
Bonne journée
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Bonjour,
tu peux faire comme ceci,
Si je peux te conseiller une documentation, voici : https://www.w3schools.com/sql/sql_select.asp
Cdlt,
tu peux faire comme ceci,
SELECT table1.champ1, table2.champ1, table3.champ1, table3.champ2 FROM table1, tablle2, table3
Si je peux te conseiller une documentation, voici : https://www.w3schools.com/sql/sql_select.asp
Cdlt,
Je viens d'essayer le code suivant, mais cela mouline beaucoup et ne semble rien retourner, pourtant les recherches effectuées sont des mot clefs présents dans la base :
Ou est l'erreur ?
$requet = "SELECT Jeux.Titre, Ordinateurs.Modele, Consoles.Modele".
" FROM Jeux, Ordinateurs, Consoles".
" WHERE Jeux.Titre = '%$rch%' OR Ordinateurs.Modele = '%$rch%' OR Consoles.Modele = '%$rch%'";
" LIMIT 10";
$req = mysql_query($requet) or die('Erreur SQL !<br />'.$requet.'<br />'.mysql_error());
Ou est l'erreur ?
Salut,
Si tu veux faire une recherche avec le wildcard % il faut utiliser l'opérateur LIKE à la place de =
$requet = "SELECT Jeux.Titre, Ordinateurs.Modele, Consoles.Modele".
" FROM Jeux, Ordinateurs, Consoles".
" WHERE Jeux.Titre LIKE '%$rch%' OR Ordinateurs.Modele LIKE '%$rch%' OR Consoles.Modele LIKE '%$rch%' LIMIT 10";
Bonne journée
Si tu veux faire une recherche avec le wildcard % il faut utiliser l'opérateur LIKE à la place de =
$requet = "SELECT Jeux.Titre, Ordinateurs.Modele, Consoles.Modele".
" FROM Jeux, Ordinateurs, Consoles".
" WHERE Jeux.Titre LIKE '%$rch%' OR Ordinateurs.Modele LIKE '%$rch%' OR Consoles.Modele LIKE '%$rch%' LIMIT 10";
Bonne journée
BOnjour,
En complément de la réponse de Pitet, je pense aussi que l'utilisation d'un from avec toutes les tables à suivre comme ça n'est pas top. au pire, s'il n'y a pas de relations entre ces tables, il faudrait faire 3 requêtes (1 sur chaque table), et les lier avec un union (+ utiliser un alias de colonne))
Hésites pas à demander si tu as besoin pour le union et/ou l'alias.
Et je redit : c'est en complément de la réponse précédente ;) il faut aussi utiliser le like.
En complément de la réponse de Pitet, je pense aussi que l'utilisation d'un from avec toutes les tables à suivre comme ça n'est pas top. au pire, s'il n'y a pas de relations entre ces tables, il faudrait faire 3 requêtes (1 sur chaque table), et les lier avec un union (+ utiliser un alias de colonne))
Hésites pas à demander si tu as besoin pour le union et/ou l'alias.
Et je redit : c'est en complément de la réponse précédente ;) il faut aussi utiliser le like.