Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: SQL kysely

Sivun loppuun

faaraot [09.03.2011 17:12:23]

#

Koodi joka tulostaa tiedot jossa on id=$id. Miten teen semmosen jutun että haen tietokannasta useamman ID:n? ja syötän ne seuraavaan koodiin???

$query=" SELECT * FROM contacts WHERE id='$id sekä toinen id)'";

Ja kun id:llä haetaan niin tulostaa esim. Ei saa hakea esim. ID 3 / jorma / pyörä.

id 1 / Make / puhelin
id 2 / pera / suto

t0ll0 [09.03.2011 17:32:05]

#

En ole varma ymmärsinkö kysymystäsi oikein.
Haluat siis hakea tietoja useamman id:n perusteella?

$query = "SELECT * FROM contacts WHERE id='1' OR id='2'";

makumaku [09.03.2011 17:52:38]

#

Voit myös katsoa netistä esimerkkejä
SELECT * FROM contacts WHERE id IN ( arvo1, arvo2, arvo3, ....)

Vähän riippuu että paljonko näitä vaihtoehtoisia id:ita on, 2-3 vaiko 200?

faaraot [09.03.2011 18:06:05]

#

Tiedän tuon mutta haluaisin tehdä sen näin. Eli haen tietokannasta yksi (nimi,tuoteid) sitten pitäisi hakea toisesta kannasta tietokannan yksi tuoteID:enn perusteella tiedot. Eli Matilla voi olla tuotteita 1,2,3.

-------nimi, tuoteid / nimi, tuoteid /nimi, tuoteid
-------Matti, 1 / matti, 2 / matti, 3 //nämä on taulukossa 1

--------ID, nimi / ID, nimi / ID, nimi //nämä on taulukossa 2
--------1, pesukone / 2, käsine / 3, pipo

tulostaa- Matti, pesukone / matti, pyörä / matti, käsine

acder [09.03.2011 18:24:49]

#

inner join

XYZ [09.03.2011 18:27:17]

#

Eri tietokannasta vai taulusta?

Vaikuttaa vähän omituiselta noiden taulujen rakenne.

SELECT a.nimi as username,b.nimi as tuotename FROM contacts a,tuotteet b WHERE a.TUOTEID = b.TUOTEID

faaraot [09.03.2011 19:12:53]

#

No en kiiressä panostanu siihen.

Samasta tietokannasta jossa on kaksi eri taulua.

Eli lähinnä haen vastausta siihen että jos haetaan taulusta 1 tieto esim tuoteiD niin voidaan hakea toisesta taulusta TuoteID:n tiedot. Vaikka tuotteennimi, paino, jne...Ongelma tulee siinä että pitäisi saada haettua taulusta 1 esim. kolme tuoteID:tä ja hakea niille sitten tuotetiedot ja tulostaa ne.

Grez [09.03.2011 21:09:27]

#

faaraot kirjoitti:

Ongelma tulee siinä että pitäisi saada haettua taulusta 1 esim. kolme tuoteID:tä ja hakea niille sitten tuotetiedot ja tulostaa ne.

No siis mikäs tuossa on sitten ongelma?

Kysymyksessäsi ei kerrota että miten taulusta 1 haetaan 3 tuoteID:tä.

esajeejee [09.03.2011 22:12:56]

#

faaraot kirjoitti:

-------nimi, tuoteid / nimi, tuoteid /nimi, tuoteid
-------Matti, 1 / matti, 2 / matti, 3 //nämä on taulukossa 1

--------ID, nimi / ID, nimi / ID, nimi //nämä on taulukossa 2
--------1, pesukone / 2, käsine / 3, pipo

tulostaa- Matti, pesukone / matti, pyörä / matti, käsine

$query = "SELECT GROUP_CONCAT(tuoteid) AS tuoteidt, nimi FROM taulukko1 WHERE nimi = 'matti' GROUP BY nimi";

$result = mysql_fetch_assoc( mysql_query( $query ) );

$tuoteidt = $result['tuoteidt']; // stringi "1,2,3"
$nimi = $result['nimi']; // stringi "matti"

$query = "SELECT nimi FROM taulukko2 WHERE ID IN($tuoteidt)";

$results = mysql_query( $query ); //
$jeejee = array();

while( $rivi = mysql_fetch_assoc( $results ) ) {
array_push( $jeejee, $rivi );
}

print_r( $jeejee );

Grez [09.03.2011 23:18:17]

#

En kyllä yhtään ymmärrä miksi tuossa ajetaan kaksi kyselyä.. Mielestäni JOIN on järkevämpää tehdä tietokannan päässä kuin PHP-koodissa.

esajeejee [09.03.2011 23:47:28]

#

En saanu joinia toimimaan tossa, ei suostunu millään tunnistamaan kolumnia "tuoteidt" (toi lennossa tehty mistä valitaan sitten lisää).

Siitä voi ite virittää joinin jos riittää jaksamista ja jos edes tarvii, turha käyttää vaikka hirveesti aikaa jos ei koskaa tuu hakee muutaku yhellä nimellä. Jos on mysql velho ja saat jotenki tuossa joinin toimimaa nii pistä ihmees :)

Grez [10.03.2011 01:24:23]

#

Ei kai toi nyt sen vaikeampi ole kuin

SELECT
  b.nimi
FROM
  taulukko1 a JOIN
  taulukko2 b ON b.ID=a.tuoteid
WHERE
  a.nimi='matti'

esajeejee [10.03.2011 02:06:13]

#

jaa noinkin näppärästi sen voi tehdä


Sivun alkuun

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta