Vinnaren i pepparkakshustävlingen!
2009-04-02, 07:37
  #1
Medlem
Hej!

Håller på att pilla lite med ett söksystem. Jag tar det simpelt nu och går egentligen igenom den frågan jag vill ha hjälp med.

Vi säger att jag ger mina besökare möjligheten att med endast en liten textruta söka igenom helst två utav mina tabeller, t.ex 'news' och 'blog' och resultaten utav sökningen ska sorteras efter datum.

En fråga som i min hjärna skulle fungera, t.ex

Kod:
"SELECT * FROM news AND blog WHERE title = '$str' ORDER BY date"

gör inte det.

Hur ska jag utforma en sån här fråga? Är hutlöst trött nu så min tankeförmåga är inte på topp.
Citera
2009-04-02, 07:44
  #2
Moderator
Ruskigbusss avatar
Har du kollat upp SQL-syntaxen?

Nå, det finns två sätt att hämta data ur två tabeller; unioner eller joins.

Union använder man om likartade kolumner finns i två olika tabeller - ex:

SELECT Fält1, Fält2, date FROM news WHERE title = '$str'
UNION
SELECT Fält1, Fält2, date FROM blog WHERE title = '$str'
ORDER BY date

Joins används om tabellerna har nån sorts relation, t ex den ena har en nyckel som återfinns i den andra - ex:

SELECT N.Fält1, N.Fält2, N.date, B.Fält3, B.Fält4
FROM news N
LEFT OUTER JOIN blog B
ON N.Idfält=B.Idfält
WHERE N.title = '$str'
ORDER BY N.date

Notera: Det finns olika sorters joins, inner och outer - som ger lite olika resultat - den exakta syntaxen får du kolla upp i just din SQL-dialekt hur den skall se ut.

I båda exemplen utgår vi från att det finns ett fält "date" i båda tabellerna. Nu är det inget bra namn på ett fält, men det är en annan fråga.
__________________
Senast redigerad av Ruskigbuss 2009-04-02 kl. 07:47.
Citera
2009-04-02, 07:50
  #3
Medlem
Citat:
Ursprungligen postat av Ruskigbuss
Har du kollat upp SQL-syntaxen?

Nå, det finns två sätt att hämta data ur två tabeller; unioner eller joins.

Union använder man om likartade kolumner finns i två olika tabeller - ex:

SELECT Fält1, Fält2, date FROM news WHERE title = '$str'
UNION
SELECT Fält1, Fält2, date FROM blog WHERE title = '$str'
ORDER BY date

Joins används om tabellerna har nån sorts relation, t ex den ena har en nyckel som återfinns i den andra - ex:

SELECT N.Fält1, N.Fält2, N.date, B.Fält3, B.Fält4
FROM news N
LEFT OUTER JOIN blog B
ON N.Idfält=B.Idfält
WHERE N.title = '$str'
ORDER BY N.date

Notera: Det finns olika sorters joins, inner och outer - som ger lite olika resultat - den exakta syntaxen får du kolla upp i just din SQL-dialekt hur den skall se ut.

I båda exemplen utgår vi från att det finns ett fält "date" i båda tabellerna. Nu är det inget bra namn på ett fält, men det är en annan fråga.

Skitfint! Visste att det fanns en enkel lösning, bara det att jag är urtrött.
Jo, likartade fält finns i bägge tabeller, dom är uppbyggda på precis samma sätt så jag antar att jag ska gå efter UNION.

Men det där med atte date inte är ett bra namn på ett fält, kan du utveckla det lite?
Citera
2009-04-02, 08:19
  #4
Moderator
Ruskigbusss avatar
Citat:
Ursprungligen postat av Isterband
Skitfint! Visste att det fanns en enkel lösning, bara det att jag är urtrött.
Jo, likartade fält finns i bägge tabeller, dom är uppbyggda på precis samma sätt så jag antar att jag ska gå efter UNION.

Men det där med atte date inte är ett bra namn på ett fält, kan du utveckla det lite?

date beskriver ju bara vilken datatypen, inte vilken sorts datum det är - är det regdatum eller datum när innehållet skrevs t ex?
Citera
2009-04-02, 08:33
  #5
Medlem
Citat:
Ursprungligen postat av Ruskigbuss
date beskriver ju bara vilken datatypen, inte vilken sorts datum det är - är det regdatum eller datum när innehållet skrevs t ex?

Ah, jo, det stämmer. Är det en sajt där flera utvecklare kan vara inblandade i så kanske det är dumt att döpa ett fält date, men är man ensam utvecklare så är det lite skitsamma.
Citera
2009-04-06, 22:24
  #6
Medlem
pikzels avatar
Citat:
Ursprungligen postat av Isterband
Ah, jo, det stämmer. Är det en sajt där flera utvecklare kan vara inblandade i så kanske det är dumt att döpa ett fält date, men är man ensam utvecklare så är det lite skitsamma.

Nja, ett tips på vägen är att du kommer vilja se tillbaka på den kod du skrivit tidigare, och då besparar du dig mycket tid genom vettig namnsättning.
Citera

Stöd Flashback

Flashback finansieras genom donationer från våra medlemmar och besökare. Det är med hjälp av dig vi kan fortsätta erbjuda en fri samhällsdebatt. Tack för ditt stöd!

Stöd Flashback