Michał Bochniak

Michał Bochniak Informatyk, AIRNET

Temat: Użycie Select - 3 tabele

Mam mniej więcej takie tabele:

Customers:
id
name
lastname

Nodegroups:
id
name

nodegroupassignments:
node.id
nodegroupid

Teraz jak zbudować zapytanie aby wyświetliła mi się nazwa klienta (name, lastname) gdzie nodegroupassignments.nodeid=customers.id i nodegroupassignments.nodegroupid=nodegroups.id oraz nodegroups.name="wyszukiwana wartość"
Kamil Mikołajczyk

Kamil Mikołajczyk programista Java /
Grails

Temat: Użycie Select - 3 tabele

użyj JOIN

select t1.costam from tabela t1
JOIN tabela2 t2 ON t1.cosInnegoId = t2.idTen post został edytowany przez Autora dnia 11.03.14 o godzinie 16:50

Temat: Użycie Select - 3 tabele

Michał B.:
Teraz jak zbudować zapytanie

Nauczyć się podstaw SQL bo nie oszukujmy się to są podstawy.
Michał Bochniak

Michał Bochniak Informatyk, AIRNET

Temat: Użycie Select - 3 tabele

Dobra wysiliłem się trochę. Mam coś takiego jednak jako wynik wypluwa mi jakieś głupoty, nie wszystkie rekordy się zgadzają:

SELECT *
FROM customers, nodegroups, nodegroupassignments
WHERE nodegroupassignments.nodeid = customers.id
AND nodegroupassignments.nodegroupid = nodegroups.id
AND nodegroups.name = "szukana_wartosc"

Na JOINach mam to samo:
SELECT customers.name, customers.lastname
FROM customers
JOIN nodegroupassignments ON nodegroupassignments.nodeid = customers.id
JOIN nodegroups ON nodegroupassignments.nodegroupid = nodegroups.id
WHERE nodegroups.name = "szukana_wartosc"

Ilość wyników zawsze się zgasza oraz pierwszy wiersz. Pozostałe to jakieś głupotyTen post został edytowany przez Autora dnia 12.03.14 o godzinie 09:47
Michał Bochniak

Michał Bochniak Informatyk, AIRNET

Temat: Użycie Select - 3 tabele

Już mam - okazało się, że potrzebuję jeszcze dołączyć jedna tabelę aby wyniki były poprawne.

Mam teraz taki skrycik PHP:
<?php

// parametry serwera
$serwer = "localhost";
$login = "login";
$haslo = "haslo";
$baza = "baza";
$tabela = "tabela";
if (mysql_connect($serwer, $login, $haslo) and mysql_select_db($baza)) {
mysql_query('SET NAMES utf8');

$wynik = mysql_query("SELECT customers.name, customers.lastname
FROM customers
JOIN nodegroupassignments ON nodegroupassignments.nodeid = customers.id
JOIN nodegroups ON nodegroupassignments.nodegroupid = nodegroups.id
WHERE nodegroups.name = "szukana_wartosc"")
or die('Błąd zapytania');

echo 'Ile wpisów:' . mysql_num_rows($wynik);

if(mysql_num_rows($wynik) > 0) {

echo "<table cellpadding=\"2\" border=1>";
while($r = mysql_fetch_assoc($wynik))
{ echo "<tr>";
echo "<td>".$r['id']."</td>";
echo "<td>".$r['name']."</td>";
echo "<td>".$r['lastname']."</td>";
echo "</tr>";
}
echo "</table>";
}
}
else echo "Nie mogę połączyć się z bazą danych!";
?>

Teraz chciałbym wypluć wszystkie dane z tabeli nodegroups.name i poprzez "pole zaznaczenia" chciałbym wybrać które wartości mnie interesują w wyszukiwaniu. Czyli kod sprawdza, które wyrażenia są wybrane i wstawia wartości do $szukana_wartosc:
"SELECT customers.name, customers.lastname
FROM customers
JOIN nodegroupassignments ON nodegroupassignments.nodeid = customers.id
JOIN nodegroups ON nodegroupassignments.nodegroupid = nodegroups.id
WHERE nodegroups.name = "$szukana_wartosc"Ten post został edytowany przez Autora dnia 12.03.14 o godzinie 13:36



Wyślij zaproszenie do