abonnement Unibet Coolblue
pi_72362422
Ik heb even een vraagje over sql...

Ik zit met 't volgende probleem. Namelijk ik heb een tabel, laten we deze even y noemen. Deze heeft 2 velden.
id en naam. Nu kan een naam gekoppeld zijn aan 1 of meerdere andere namen in dezelfde tabel...

Dus gewoon een koppeltabel...
id_1 id_2
die beiden eigenlijk verwijzen naar de de eerste rij van de vorige tabel. Nu is mijn vraag.

Kan ik hier oor foreign key constraints op gebruiken? Ik probeer dit namelijk bij sql server maar lukt niet echt
pi_72362460
quote:
Op woensdag 2 september 2009 08:00 schreef ReWout het volgende:
Ik heb even een vraagje over sql...
Welke SQL smaak bedoel je precies?
pi_72362757
quote:
Op woensdag 2 september 2009 08:00 schreef ReWout het volgende:
Ik heb even een vraagje over sql...

Ik zit met 't volgende probleem. Namelijk ik heb een tabel, laten we deze even y noemen. Deze heeft 2 velden.
id en naam. Nu kan een naam gekoppeld zijn aan 1 of meerdere andere namen in dezelfde tabel...

Dus gewoon een koppeltabel...
id_1 id_2
die beiden eigenlijk verwijzen naar de de eerste rij van de vorige tabel. Nu is mijn vraag.

Kan ik hier oor foreign key constraints op gebruiken? Ik probeer dit namelijk bij sql server maar lukt niet echt
SQL Server. Verkeerde topic.
-> Het grote (?) .NET en MSSQL topic

Maar goed, wat gebruik je als ids? ints / bigints of uniqueidentifiers? De kolomtypes waar je de foreign key constraints op legt (dus de id kolom van je 'y' tabel en het betreffende id veld in je koppeltabel) dienen wel hetzelfde te zijn. Is het id veld van je 'y'-tabel wel primary key? Welke error krijg je overigens?
pi_72363730
quote:
Op woensdag 2 september 2009 08:37 schreef Tuvai.net het volgende:

[..]

SQL Server. Verkeerde topic.
-> Het grote (?) .NET en MSSQL topic

Maar goed, wat gebruik je als ids? ints / bigints of uniqueidentifiers? De kolomtypes waar je de foreign key constraints op legt (dus de id kolom van je 'y' tabel en het betreffende id veld in je koppeltabel) dienen wel hetzelfde te zijn. Is het id veld van je 'y'-tabel wel primary key? Welke error krijg je overigens?
Yup id in y is natuurlijk primary key. Mag ook geen null hebben en types zijn 't zelfde.
pi_72363793
quote:
Op woensdag 2 september 2009 08:37 schreef Tuvai.net het volgende:
Welke error krijg je overigens?
pi_72366488
nvm. heb 't al was een fout in 't schema.
pi_72366529
quote:
Op woensdag 2 september 2009 11:56 schreef ReWout het volgende:
nvm. heb 't al was een fout in 't schema.
quote] Op woensdag 2 september 2009 09:53 schreef Tuvai.net het volgende:
[..]
[/quote]

Kon je toch niets mee aangezien ie zei dat de PK van tabel y toestond dat ie op null kon staan. Maar dat was dus helemaal niet zo.
  FOK!-Schrikkelbaas woensdag 2 september 2009 @ 22:51:36 #108
1972 Swetsenegger
Egocentrische Narcist
pi_72384102
Kan je in een insert query een select subquery inbouwen?

voorbeeld

1
2
3
4
5
INSERT into bestellingInhoud
       (id,bestelId,eigId,aantal,prijs)
       VALUES(0,'".$bestelId."','".$k."','".$v."',".
               SELECT prijs FROM eigenschappen WHERE id=$k
              .")";


Maar dan werkend
pi_72384232
quote:
Op woensdag 2 september 2009 22:51 schreef Swetsenegger het volgende:
Kan je in een insert query een select subquery inbouwen?

voorbeeld
[ code verwijderd ]

Maar dan werkend
Ja.

1
2
3
INSERT INTO bestellingInhoud
(id, bestelId, eigId, aantal, prijs)
VALUES(0, '".$bestelId."', '".$k."', '".$v."', (SELECT prijs FROM eigenschappen WHERE id=".$k."))


Gewoon even puur op SQL niveau denken dus, volgens mij probeer jij je subquery als PHP uit te voeren, als ik de aanhalingstekens en de puntjes om je subquery heen zie. Voor de rest gewoon een kwestie van een ( en ) er om heen om een subquery aan te duiden, zoals je dat ook in een SELECT query doet.

[ Bericht 6% gewijzigd door Tuvai.net op 03-09-2009 07:40:30 ]
  FOK!-Schrikkelbaas woensdag 2 september 2009 @ 22:56:47 #110
1972 Swetsenegger
Egocentrische Narcist
pi_72384329
Cool! ga ik gelijk proberen

en het werkt natuurlijk...

[ Bericht 13% gewijzigd door Swetsenegger op 02-09-2009 23:14:02 ]
pi_72390066
Ja, dat kan dus
Handige manier om data van een tijdelijke tabel naar een live tabel over te pompen bijvoorbeeld

phpMyAdmin kan dat ook trouwens, dus daar had je het principe ook wel vandaan kunnen jatten
pi_72391882
vanaf welke versie (mysql) werken subqueries eingelijk?
Just say hi!
pi_72393683
quote:
Op donderdag 3 september 2009 10:19 schreef Chandler het volgende:
vanaf welke versie (mysql) werken subqueries eingelijk?
Handig spul . Vertraagd de boel wel flink.
  donderdag 3 september 2009 @ 12:43:29 #115
75592 GlowMouse
l'état, c'est moi
pi_72395803
quote:
Op donderdag 3 september 2009 11:28 schreef Mordreth het volgende:

[..]

Handig spul . Vertraagdt de boel wel flink.
Er zijn genoeg situaties waarin een subquery sneller is dan dezelfde data ophalen zonder subquery.
eee7a201261dfdad9fdfe74277d27e68890cf0a220f41425870f2ca26e0521b0
pi_72395838
quote:
Op donderdag 3 september 2009 12:43 schreef GlowMouse het volgende:

[..]

Er zijn genoeg situaties waarin een subquery sneller is dan dezelfde data ophalen zonder subquery.
Dat dus.

Om actuele data uit een andere tabel/record op te halen is een subquery ideaal bij een insert/update. Sowieso sneller dan de data zonder subquery ergens ophalen (en nog erger, dat IN je applicatie doen, buiten je database) en dan weer verwerken.
  donderdag 3 september 2009 @ 12:46:07 #117
75592 GlowMouse
l'état, c'est moi
pi_72395887
quote:
Op donderdag 3 september 2009 12:45 schreef Tuvai.net het volgende:

[..]

Dat dus.

Om actuele data uit een andere tabel/record op te halen is een subquery ideaal bij een insert/update. Sowieso sneller dan de data zonder subquery ergens ophalen (en nog erger, dat IN je applicatie doen, buiten je database) en dan weer verwerken.
Ook bij SELECTs kan een subquery sneller zijn.
eee7a201261dfdad9fdfe74277d27e68890cf0a220f41425870f2ca26e0521b0
pi_72395999
Niks mis met subqueries
pi_72406809
Oke, ook ik zit met een mysql datum probleempje.

Ik probeer te checken of er al een afspraak is op een bepaalde tijdstip op een dag.
Na diverse opties geprobeerd te hebben dacht ik een werkende te hebben, maar na 2 weken niks gedaan te hebben (cursus) werkt de check ineens niet meer?

$sql = "SELECT aid, begin_stamp, eind_stamp FROM agenda WHERE $aid (begin_stamp BETWEEN $beginDag AND $eindDag) AND ( (begin_stamp BETWEEN $beginStamp AND $eindStamp) OR (eind_stamp BETWEEN $beginStamp AND $eindStamp) ) ORDER BY begin_stamp";

Ik begin door alleen de dag te selecteren, '(begin_stamp BETWEEN $beginDag AND $eindDag) '

en daarna te controleren of er een afspraak is.

Die levert bijvoorbeeld zo'n query op.
Afspraak Begin Dag: 03-09-2009, 00:00:00 1251928800
Afspraak Eind Dag: 04-09-2009, 00:00:00 1252015200
Nieuwe Afspraak Begin Stamp: 03-09-2009, 09:55:00 1251964500
Nieuwe Afspraak Eind Stamp: 03-09-2009, 10:10:00 1251965400

[SELECT aid, begin_stamp, eind_stamp FROM agenda WHERE aid<>18 AND (begin_stamp BETWEEN 1251928800 AND 1252015200) AND ( (begin_stamp BETWEEN 1251964500 AND 1251965400) OR (eind_stamp BETWEEN 1251964500 AND 1251965400) ) ORDER BY begin_stamp]

Deze check komt ook bij een update, mocht de tijd zijn aangepast.
Maar dan alleen worde aid toegevoegd.

[ Bericht 2% gewijzigd door Darkomen op 03-09-2009 23:27:31 ]
  donderdag 3 september 2009 @ 19:06:45 #120
75592 GlowMouse
l'état, c'est moi
pi_72407072
Kijk eens naar mysql_error()
eee7a201261dfdad9fdfe74277d27e68890cf0a220f41425870f2ca26e0521b0
pi_72407417
quote:
Op donderdag 3 september 2009 18:57 schreef Darkomen het volgende:
Oke, ook ik zit met een mysql datum probleempje.

Ik probeer te checken of er al een afspraak is op een bepaalde tijdstip op een dag.
Na diverse opties geprobeerd te hebben dacht ik een werkende te hebben, maar na 2 weken niks gedaan te hebben (cursus) werkt de check ineens niet meer?

$sql = "SELECT aid, begin_stamp, eind_stamp FROM agenda WHERE (begin_stamp BETWEEN $beginDag AND $eindDag) AND ( (begin_stamp=<$eindStamp) (eind_stamp>=$beginStamp ) ) ORDER BY begin_stamp";

Ik begin door alleen de dag te selecteren, '(begin_stamp BETWEEN $beginDag AND $eindDag) '

en daarna te controleren of er een afspraak is.

Die levert bijvoorbeeld zo'n query op.
Afspraak Begin Dag: 03-09-2009, 00:00:00 1251928800
Afspraak Eind Dag: 04-09-2009, 00:00:00 1252015200
Nieuwe Afspraak Begin Stamp: 03-09-2009, 09:55:00 1251964500
Nieuwe Afspraak Eind Stamp: 03-09-2009, 10:10:00 1251965400

[SELECT aid, begin_stamp, eind_stamp FROM agenda WHERE aid<>18 AND (begin_stamp BETWEEN 1251928800 AND 1252015200) AND ( (begin_stamp BETWEEN 1251964500 AND 1251965400) OR (eind_stamp BETWEEN 1251964500 AND 1251965400) ) ORDER BY begin_stamp]

Deze check komt ook bij een update, mocht de tijd zijn aangepast.
Maar dan alleen worde aid toegevoegd.
1AND ( (begin_stamp=<$eindStamp) *** (eind_stamp>=$beginStamp ) ) 


Hoort er geen AND / OR te staan bij die sterretjes?
pi_72409778
quote:
Op donderdag 3 september 2009 19:16 schreef Tuvai.net het volgende:

[..]
[ code verwijderd ]

Hoort er geen AND / OR te staan bij die sterretjes?
En:

begin_stamp=<$eindStamp
=< bestaat niet. Dat moet <= zijn
  donderdag 3 september 2009 @ 21:39:01 #123
37634 wobbel
Da WoBBeL King
pi_72413635
Op dit moment heb ik een zelfgeschreven webshop met een tabel Categorieen en tabel Subcategorieen...
Graag zou ik het willen maken dat je oneindig veel categorieen kan maken (in de praktijk 3 of 4 dus)

Hoe ga je dat oplossen met PHP? ik kan er geen tutorials over lezen...
pi_72413864
quote:
Op donderdag 3 september 2009 21:39 schreef wobbel het volgende:
Op dit moment heb ik een zelfgeschreven webshop met een tabel Categorieen en tabel Subcategorieen...
Graag zou ik het willen maken dat je oneindig veel categorieen kan maken (in de praktijk 3 of 4 dus)

Hoe ga je dat oplossen met PHP? ik kan er geen tutorials over lezen...
Niet per definitie met PHP. Je zorgt gewoon dat je één tabel categorieën hebt met daarin een veld ParentID. ParentID verwijst weer naar het ID van een ander record in diezelfde tabel.

Afhankelijk van (wat je presenteert in) je applicatie, zul je bijvoorbeeld wel een 'recursieve functie' moeten schrijven als je een pagina hebt waar je de hele 'boomstructuur' van categorieën wilt weergeven.

[ Bericht 6% gewijzigd door Tuvai.net op 03-09-2009 21:48:17 ]
  donderdag 3 september 2009 @ 21:53:55 #125
37634 wobbel
Da WoBBeL King
pi_72414448
quote:
Op donderdag 3 september 2009 21:42 schreef Tuvai.net het volgende:

[..]

Niet per definitie met PHP. Je zorgt gewoon dat je één tabel categorieën hebt met daarin een veld ParentID. ParentID verwijst weer naar het ID van een ander record in diezelfde tabel.

Afhankelijk van (wat je presenteert in) je applicatie, zul je bijvoorbeeld wel een 'recursieve functie' moeten schrijven als je een pagina hebt waar je de hele 'boomstructuur' van categorieën wilt weergeven.
En dat is juist het moeilijke....hoe kom ik erachter welke categorie waarin hoort en hoe kan ik dat makkelijk weergeven...Want ik zou wel ontiegelijk veel query's moeten uithalen om dat dan weer te geven...

En ik kan nergens een goede tuto ofzo vinden...
abonnement Unibet Coolblue
Forum Opties
Forumhop:
Hop naar:
(afkorting, bv 'KLB')