0
votes

Obtenir la valeur d'une table via un identifiant d'une autre table

Si fondamentalement, j'ai une table: "Tâche":

    $query = $conn->query("SELECT * FROM `task` WHERE status != 'Done' ORDER BY `id` ASC");


1 commentaires

Vous devez utiliser Join, veuillez fournir le code que vous utilisez pour interroger votre base de données.


3 Réponses :


1
votes

Vous pouvez utiliser l'utilisateur interne rejoindre pour rejoindre les deux tables et obtenir des données d'eux.

joint interne est utilisé dans ce contexte en supposant que chaque identifiant d'adresse de la base de données Trip correspond à l'adresse réelle de la table de base de données: adresse . xxx

note:

Vos noms de champs spécifiés contiennent des espaces.

J'ai ajouté des traits de soulignement au lieu d'espaces en eux.

Veuillez mettre les noms de champs appropriés ici. < p> Référence:

edit:

requête mise à jour selon la question mise à jour: xxx


3 commentaires

Voir les modifications s'il vous plaît. J'ai oublié de mentionner ma requête et de modifier les noms des tables et des colonnes.


Merci beaucoup. Quand vous mettez t. **** et a. ****, dois-je remplacer ceux avec mes noms de table? Et comment puis-je générer l'adresse à ECHO


Vous pouvez utiliser des noms de table directs ou vous pouvez utiliser Alias. Vous pouvez boucler avec mySQLI _ * fonctions.



1
votes

mis à jour en fonction de vos tables et de colonnes. Si vous voulez adresse code> et Postal code> Code où votre Task.Id code> et Moradas.id code> correspondance de valeur, alors vous devriez Rejoignez deux tables et obtenez adresse code> et code postal code> de moradas code> table - Essayez ceci: -

$sql = "SELECT
  task.id,
  CONCAT(
    moradas.`Morada`,
    ' ',
    moradas.`CodPostal`
  ) AS address
FROM
  task
  LEFT JOIN moradas
    ON (task.id = moradas.id)
WHERE task.`status` != 'Done'
ORDER BY task.id ASC";

$result = $conn->query($sql);

if ($result->num_rows > 0) {
    // output data of each row
    while($row = $result->fetch_assoc()) {
        echo "Address : " . $row["address"]."<br>";
    }
} else {
    echo "0 results returned";
}
$conn->close();


3 commentaires

Voir les modifications s'il vous plaît. Changé quelques colonnes et montré ma requête.


Qu'est-ce que je mets dans l'écho? J'ai ceci et cela me donne une erreur d'index non définie.


Réponse mise à jour. Regarde. Si vous n'avez qu'un seul résultat, vous pouvez sauter pendant la boucle, mais je pense qu'il devrait revenir autant de lignes que dans votre base de données.



0
votes

Suivez ce schéma toujours comme je vais vous montrer concernant vos noms de table Si vous avez de grandes données dans MySQL comme nom. ID de code postal. Et supposons que vous ayez des adresses dans une autre table Sorcière liée à un autre service de suivi comme exemple xxx

Vous aurez maintenant une table en sortie PHP avec toutes les données de la requête.

  • Si la requête renvoie un enregistrement afin que la table aura un résultat
  • Si la requête dispose de 10000 enregistrements en conséquence, la table aura donc 10000

    Vous pouvez mettre une limite en requête pour récupérer 100 résultats par demande


2 commentaires

Pourquoi écrivez-vous cela avec la bibliothèque de code MYSQL _ MYSQL? Il a été interrompu il y a de nombreuses années et retiré entièrement en PHP7. Aucun nouveau code ne doit être écrit à l'aide de cette bibliothèque et l'utiliser, même pour une démonstration comme celle-ci, est 2019, il suffit de définir un mauvais exemple. Il vous laisse vulnérable aux attaques d'injection SQL (en raison de l'absence de support de requête paramétré) et potentiellement d'autres vulnérabilités non valables. Bien mieux de donner un exemple moderne à l'aide de mysqli ou po .


Droite Cette bibliothèque est déduie et il y a beaucoup de notifications à ce sujet sur php.net. Je viens de l'utiliser comme référence. Mysqli est bon comme vous l'avez dit. Pour moi, je n'utilise pas tous les deux longtemps. J'utilise principalement PDO depuis que je tournais habituellement les requêtes sur de nombreux serveurs.